Класс 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 |
рисует прямоугольную панель с внешним видом, зависящим от текущего стиля графического интерфейса. Она может быть поднятой или опущенной. |
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().
[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.1/qframe.html