Класс 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 |
- 211 публичных функций унаследовано от QWidget
- 31 публичная функция унаследована от 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 также можно использовать напрямую для создания простых замещающих рамок без какого-либо содержимого.
Стиль рамки определяется формой рамки и стилем тени, которые визуально отделяют рамку от окружающих виджетов. Эти свойства можно задать вместе с помощью функции 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/archives/qt-5.6/qframe.html