Класс QFrame
Класс QFrame — базовый класс виджетов, которые могут иметь рамку. Подробнее...
| Заголовок: | #include <QFrame> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| 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 |
Защищённые функции
| virtual 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 также может использоваться непосредственно для создания простых заполнительных рамок без какого-либо содержимого.
Стиль рамки задаётся формой рамки и стилем тени, используемым для визуального разделения рамки от окружающих виджетов. Эти свойства можно задать вместе с помощью функции setFrameStyle() и прочитать с помощью frameStyle().
Формы рамки — NoFrame, Box, Panel, StyledPanel, HLine и VLine; стили тени — Plain, Raised и Sunken.
Виджет рамки имеет три атрибута, описывающие толщину границы: lineWidth, midLineWidth и frameWidth.
- Ширина линии — ширина границы рамки. Её можно изменить, чтобы настроить внешний вид рамки.
- Ширина средней линии задаёт ширину дополнительной линии посередине рамки, которая использует третий цвет для получения специального 3D-эффекта. Обратите внимание, что средняя линия отображается только для рамок Box, HLine и VLine, которые подняты или опущены.
- Ширина рамки определяется стилем рамки, а функция frameWidth() используется для получения значения, определённого для используемого стиля.
Отступ между рамкой и содержимым рамки можно настроить с помощью функции QWidget::setContentsMargins().
В этой таблице показаны некоторые комбинации стилей и ширины линий:
Документация по типам членов
Перечисление QFrame::Shadow
Это перечисление определяет типы теней, которые используются для придания 3D-эффекта рамкам.
| Константа | Значение | Описание |
|---|---|---|
QFrame::Plain |
0x0010 |
рамка и содержимое отображаются на одном уровне с окружающим; отрисовка с использованием цвета палитры QPalette::WindowText (без 3D-эффекта) |
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 |
рисует прямоугольную панель с внешним видом, зависящим от текущего стиля GUI. Может быть поднятой или опущенной. |
QFrame::HLine |
0x0004 |
QFrame рисует горизонтальную линию, не обрамляющую ничего (полезно в качестве разделителя) |
QFrame::VLine |
0x0005 |
QFrame рисует вертикальную линию, не обрамляющую ничего (полезно в качестве разделителя) |
QFrame::WinPanel |
0x0003 |
рисует прямоугольную панель, которая может быть поднятой или опущенной, как в Windows 2000. Указание этой формы устанавливает ширину линии в 2 пикселя. WinPanel предоставляется для совместимости. Для независимости от стиля GUI рекомендуется использовать StyledPanel вместо него. |
Когда он не вызывает QStyle, Shape взаимодействует с QFrame::Shadow, lineWidth() и midLineWidth() для создания окончательного результата. См. рисунок рамок в документации основного класса.
См. также QFrame::Shadow, QFrame::style() и QStyle::drawPrimitive().
перечисление 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().
[read-only] 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().
[virtual protected, since 5.5] 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-6.2/qframe.html