Класс QFrame
Класс QFrame — базовый класс виджетов, которые могут иметь рамку. Подробнее...
| Заголовок: | #include <QFrame> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
| Наследуется: | QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget и QToolBox |
Типы публичного интерфейса
| Перечисление | Shadow { Plain, Raised, Sunken } |
| Перечисление | Shape { NoFrame, Box, Panel, StyledPanel, ..., WinPanel } |
| Перечисление | StyleMask { Shadow_Mask, Shape_Mask } |
Свойства
|
|
Открытые функции
| QFrame(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) | |
| ~QFrame() | |
| QRect | frameRect() const |
| Shadow | frameShadow() const |
| Shape | frameShape() const |
| int | frameStyle() const |
| int | frameWidth() const |
| int | lineWidth() const |
| int | midLineWidth() const |
| void | setFrameRect(const QRect &) |
| void | setFrameShadow(Shadow) |
| void | setFrameShape(Shape) |
| void | setFrameStyle(int style) |
| void | setLineWidth(int) |
| void | setMidLineWidth(int) |
Переопределённые открытые функции
| virtual QSize | sizeHint() const |
- 214 открытых функций, унаследованных от QWidget
- 32 открытых функций, унаследованных от QObject
- 14 открытых функций, унаследованных от QPaintDevice
Защищённые функции
| void | initStyleOption(QStyleOptionFrame *option) const |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *ev) |
| virtual bool | event(QEvent *e) |
| virtual void | paintEvent(QPaintEvent *) |
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные наследуемые члены
- 19 открытых слотов, унаследованных от QWidget
- 1 открытый слот, унаследованный от QObject
- 3 сигналов, унаследованных от QWidget
- 2 сигнала, унаследованных от QObject
- 5 статических открытых членов, унаследованных от QWidget
- 11 статических открытых членов, унаследованных от QObject
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Класс 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 |
рисует прямоугольную панель с видом, зависящим от текущего стиля графического интерфейса. Она может быть поднята или опущена. |
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
Это свойство хранит значение тени фрейма из стиля фрейма
Функции доступа:
| Shadow | frameShadow() const |
| void | setFrameShadow(Shadow) |
См. также frameStyle() и frameShape().
frameShape : Shape
Это свойство хранит значение формы фрейма из стиля фрейма
Функции доступа:
| Shape | frameShape() const |
| void | setFrameShape(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 = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
Конструирует виджет фрейма со стилем фрейма NoFrame и шириной рамки 1 пиксел.
Аргументы parent и f передаются конструктору QWidget.
QFrame::~QFrame()
Уничтожает фрейм.
[virtual protected] void QFrame::changeEvent(QEvent *ev)
Переопределено из QWidget::changeEvent().
[virtual protected] bool QFrame::event(QEvent *e)
Переопределено из QObject::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().
[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().
[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.9/qframe.html