Класс QFrame
Класс QFrame — базовый класс виджетов, которые могут иметь рамку. Подробнее...
| Заголовок: | #include <QFrame> |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
| Наследующие классы: | QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget и QToolBox |
Типы публичного доступа
| Перечисление | Shadow { Plain, Raised, Sunken } |
| Перечисление | Shape { NoFrame, Box, Panel, StyledPanel, HLine, …, WinPanel } |
| Перечисление | StyleMask { Shadow_Mask, Shape_Mask } |
Свойства
|
|
Публичные функции
| QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| virtual | ~QFrame() |
| QRect | frameRect() const |
| QFrame::Shadow | frameShadow() const |
| QFrame::Shape | frameShape() const |
| int | frameStyle() const |
| int | frameWidth() const |
| int | lineWidth() const |
| int | midLineWidth() const |
| void | setFrameRect(const QRect &) |
| void | setFrameShadow(QFrame::Shadow) |
| void | setFrameShape(QFrame::Shape) |
| void | setFrameStyle(int style) |
| void | setLineWidth(int) |
| void | setMidLineWidth(int) |
Переопределённые публичные функции
| virtual QSize | sizeHint() const override |
Защищённые функции
| void | initStyleOption(QStyleOptionFrame *option) const |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *ev) override |
| virtual bool | event(QEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
Подробное описание
QMenu использует это для «подъёма» меню над окружающим экраном. QProgressBar имеет «потопленный» вид. QLabel имеет плоский вид. Рамки виджетов, подобных этим, можно изменить.
QLabel label(...); label.setFrameStyle(QFrame::Panel | QFrame::Raised); label.setLineWidth(2); QProgressBar pbar(...); label.setFrameStyle(QFrame::NoFrame);
Класс QFrame также можно использовать напрямую для создания простых фреймов-заполнителей без содержимого.
Стиль рамки определяется формой рамки (frame shape) и стилем тени (shadow style), которые используются для визуального разделения рамки от окружающих виджетов. Эти свойства можно установить вместе с помощью функции setFrameStyle() и прочитать с помощью функции frameStyle().
Формы рамок — NoFrame, Box, Panel, StyledPanel, HLine и VLine; стили теней — Plain, Raised и Sunken.
В виджете рамки есть три атрибута, описывающие толщину границы: lineWidth, midLineWidth и frameWidth.
- Ширина линии — ширина границы рамки. Её можно изменить, чтобы настроить внешний вид рамки.
- Ширина средней линии определяет ширину дополнительной линии в середине рамки, которая использует третий цвет для получения специального трёхмерного эффекта. Обратите внимание, что средняя линия отображается только для рамок Box, HLine и VLine, которые подняты или опущены.
- Ширина рамки определяется стилем рамки, и функция frameWidth() используется для получения значения, определённого для используемого стиля.
Отступ между рамкой и содержимым рамки можно настроить с помощью функции QWidget::setContentsMargins().
В этой таблице показаны некоторые комбинации стилей и ширины линий:
Документация по типам членов
Перечисление QFrame::Shadow
Это перечисление определяет типы теней, используемые для создания трёхмерного эффекта для рамок.
| Константа | Значение | Описание |
|---|---|---|
QFrame::Plain |
0x0010 |
рамка и содержимое выглядят на одном уровне с окружающей средой; рисуется с использованием цвета палитры QPalette::WindowText (без какого-либо трёхмерного эффекта) |
QFrame::Raised |
0x0020 |
рамка и содержимое выглядят поднятыми; рисуется 3D-выпуклая линия с использованием светлых и тёмных цветов текущей цветовой группы |
QFrame::Sunken |
0x0030 |
рамка и содержимое выглядят опущенными; рисуется 3D-вдавленная линия с использованием светлых и тёмных цветов текущей цветовой группы |
Shadow взаимодействует с QFrame::Shape, lineWidth() и midLineWidth(). См. изображение рамок в основной документации класса.
См. также QFrame::Shape, lineWidth() и midLineWidth().
Перечисление QFrame::Shape
Это перечисление определяет доступные формы рамок.
| Константа | Значение | Описание |
|---|---|---|
QFrame::NoFrame |
0 |
QFrame ничего не рисует |
QFrame::Box |
0x0001 |
QFrame рисует рамку вокруг своего содержимого |
QFrame::Panel |
0x0002 |
QFrame рисует панель, чтобы содержимое выглядело поднятым или опущенным |
QFrame::StyledPanel |
0x0006 |
рисует прямоугольную панель с внешним видом, зависящим от текущего стиля графического интерфейса. Она может быть поднята или опущена. |
QFrame::HLine |
0x0004 |
QFrame рисует горизонтальную линию, не обрамляя ничего (полезно в качестве разделителя) |
QFrame::VLine |
0x0005 |
QFrame рисует вертикальную линию, не обрамляя ничего (полезно в качестве разделителя) |
QFrame::WinPanel |
0x0003 |
рисует прямоугольную панель, которая может быть поднята или опущена, как в Windows 2000. Указание этой формы устанавливает ширину линии в 2 пикселя. WinPanel предоставляется для совместимости. Для независимости от стиля графического интерфейса рекомендуется использовать StyledPanel. |
Когда не вызывается QStyle, Shape взаимодействует с QFrame::Shadow, lineWidth() и midLineWidth() для создания итогового результата. См. изображение фреймов в документации основного класса.
См. также QFrame::Shadow, QFrame::style() и QStyle::drawPrimitive().
enum QFrame::StyleMask
Этот перечисление определяет две константы, которые могут быть использованы для извлечения двух компонентов frameStyle():
| Константа | Значение | Описание |
|---|---|---|
QFrame::Shadow_Mask |
0x00f0 |
Часть Shadow от frameStyle() |
QFrame::Shape_Mask |
0x000f |
Часть Shape от frameStyle() |
Как правило, вам не нужно использовать эти значения, так как frameShadow() и frameShape() уже извлекают части Shadow и Shape из frameStyle().
См. также frameStyle() и setFrameStyle().
Документация по свойствам
frameRect : QRect
Это свойство содержит прямоугольник фрейма.
Прямоугольник фрейма — это прямоугольник, в котором рисуется фрейм. По умолчанию это весь виджет. Установка прямоугольника не вызывает обновление виджета. Прямоугольник фрейма автоматически корректируется при изменении размера виджета.
Если вы установите прямоугольник в нулевой прямоугольник (например, QRect(0, 0, 0, 0)), то полученный прямоугольник фрейма эквивалентен прямоугольнику виджета.
Функции доступа:
| QRect | frameRect() const |
| void | setFrameRect(const QRect &) |
frameShadow : Shadow
Это свойство содержит значение тени фрейма из стиля фрейма.
Функции доступа:
| QFrame::Shadow | frameShadow() const |
| void | setFrameShadow(QFrame::Shadow) |
См. также frameStyle() и frameShape().
frameShape : Shape
Это свойство содержит значение формы фрейма из стиля фрейма.
Функции доступа:
| QFrame::Shape | frameShape() const |
| void | setFrameShape(QFrame::Shape) |
См. также frameStyle() и frameShadow().
frameWidth : const int
Это свойство содержит ширину фрейма, который рисуется.
Обратите внимание, что ширина фрейма зависит от стиля фрейма, а не только от ширины линии и ширины средней линии. Например, стиль, заданный NoFrame, всегда имеет ширину фрейма 0, а стиль Panel имеет ширину фрейма, эквивалентную ширине линии.
Функции доступа:
| int | frameWidth() const |
См. также lineWidth(), midLineWidth() и frameStyle().
lineWidth : int
Это свойство содержит ширину линии.
Обратите внимание, что общая ширина линии для фреймов, используемых в качестве разделителей (HLine и VLine), задаётся свойством frameWidth.
Значение по умолчанию — 1.
Функции доступа:
| int | lineWidth() const |
| void | setLineWidth(int) |
См. также midLineWidth и frameWidth.
midLineWidth : int
Это свойство содержит ширину средней линии.
Значение по умолчанию — 0.
Функции доступа:
| int | midLineWidth() const |
| void | setMidLineWidth(int) |
См. также lineWidth и frameWidth.
Документация по функциям-членам
QFrame::QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Создаёт виджет фрейма со стилем фрейма NoFrame и шириной рамки 1 пиксел.
Аргументы parent и f передаются конструктору QWidget.
[virtual] QFrame::~QFrame()
Уничтожает фрейм.
[override virtual protected] void QFrame::changeEvent(QEvent *ev)
Переопределяет: QWidget::changeEvent(QEvent *event).
[override virtual protected] bool QFrame::event(QEvent *e)
Переопределяет: QWidget::event(QEvent *event).
int QFrame::frameStyle() const
Возвращает стиль фрейма.
Значение по умолчанию — QFrame::Plain.
См. также setFrameStyle(), frameShape() и frameShadow().
[protected] void QFrame::initStyleOption(QStyleOptionFrame *option) const
Инициализирует option значениями из этого QFrame. Этот метод полезен для подклассов, когда им нужен QStyleOptionFrame, но они не хотят заполнять всю информацию самостоятельно.
Функция была добавлена в Qt 5.5.
См. также QStyleOption::initFrom().
[override virtual protected] void QFrame::paintEvent(QPaintEvent *)
Переопределяет: QWidget::paintEvent(QPaintEvent *event).
void QFrame::setFrameStyle(int style)
Устанавливает стиль фрейма в style.
style — это побитовое ИЛИ между формой фрейма и стилем тени фрейма. См. изображение фреймов в документации основного класса.
Формы фреймов задаются в QFrame::Shape, а стили тени — в QFrame::Shadow.
Если задана ширина средней линии больше 0, дополнительная линия рисуется для фреймов типа Raised или Sunken Box, HLine и VLine. Для рисования средних линий используется средний цвет текущей группы цветов.
См. также frameStyle().
[override virtual] QSize QFrame::sizeHint() const
Переопределяет функцию доступа к свойству: QWidget::sizeHint.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qframe.html