Класс QFrame
Класс QFrame — базовый класс виджетов, которые могут иметь рамку. Подробнее...
| Заголовок: | #include <QFrame> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
| Наследуется от: | QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget и QToolBox |
Типы public
| перечисление | Shadow { Plain, Raised, Sunken } |
| перечисление | Shape { NoFrame, Box, Panel, StyledPanel, ..., WinPanel } |
| перечисление | StyleMask { Shadow_Mask, Shape_Mask } |
Свойства
|
|
Публичные функции
| QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = ...) | |
| 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 |
- 214 публичных функций унаследовано от QWidget
- 34 публичных функций унаследовано от QObject
- 14 публичных функций унаследовано от QPaintDevice
Защищённые функции
| void | initStyleOption(QStyleOptionFrame *option) const |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *ev) override |
| virtual bool | event(QEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
- 35 защищённых функций унаследовано от QWidget
- 9 защищённых функций унаследовано от QObject
- 1 защищённая функция унаследовано от QPaintDevice
Дополнительные унаследованные члены
- 19 public slots унаследовано от QWidget
- 1 public slot унаследовано от QObject
- 3 сигналов унаследовано от QWidget
- 2 сигналов унаследовано от QObject
- 1 public переменной унаследовано от QObject
- 5 статических публичных членов унаследовано от QWidget
- 10 статических публичных членов унаследовано от QObject
- 1 защищённый слот унаследовано от QWidget
- 2 защищённых переменных унаследовано от QObject
- 1 защищённый тип унаследовано от QPaintDevice
Подробное описание
Класс QFrame — базовый класс виджетов, которые могут иметь рамку.
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.
- Ширина линии — это ширина границы рамки. Она может быть изменена для настройки внешнего вида рамки.
- Ширина средней линии задаёт ширину дополнительной линии посередине рамки, которая использует третий цвет для получения специального 3D-эффекта. Обратите внимание, что средняя линия рисуется только для рамок Box, HLine и VLine, которые подняты или опущены.
- Ширина рамки определяется стилем рамки, и функция frameWidth() используется для получения значения, определённого для используемого стиля.
Отступ между рамкой и содержимым рамки может быть настроен с помощью функции QWidget::setContentsMargins().
В этой таблице показаны некоторые комбинации стилей и ширины линий:
Документация по типам членов
перечисление QFrame::Shadow
Это перечисление определяет типы теней, которые используются для придания 3D-эффекта рамкам.
| Константа | Значение | Описание |
|---|---|---|
QFrame::Plain |
0x0010 |
рамка и содержимое выровнены с окружением; отрисовка с использованием цвета палитры QPalette::WindowText (без 3D эффекта) |
QFrame::Raised |
0x0020 |
рамка и содержимое выглядят поднятыми; отрисовка 3D поднятой линии с использованием светлых и тёмных цветов текущей цветовой группы |
QFrame::Sunken |
0x0030 |
рамка и содержимое выглядят опущенными; отрисовка 3D опущенной линии с использованием светлых и тёмных цветов текущей цветовой группы |
Отступ взаимодействует с QFrame::Shape, lineWidth() и midLineWidth(). См. изображение рамок в документации основного класса.
См. также QFrame::Shape, lineWidth() и midLineWidth().
enum 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().
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 = ...)
Создаёт виджет рамки со стилем рамки NoFrame и шириной рамки 1 пиксел.
Аргументы parent и f передаются конструктору QWidget.
[virtual] QFrame::~QFrame()
Удаляет рамку.
[override virtual protected] void QFrame::changeEvent(QEvent *ev)
Переопределено из QWidget::changeEvent().
[override virtual protected] bool QFrame::event(QEvent *e)
Переопределено из QWidget::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().
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/archives/qt-5.11/qframe.html