Spec-Zone.ru › Qt

Класс 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 }

Свойства

  • frameRect : QRect
  • frameShadow : Shadow
  • frameShape : Shape
  • frameWidth : const int
  • lineWidth : int
  • midLineWidth : int

Открытые функции

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().

В этой таблице показаны некоторые комбинации стилей и ширины линий:

Table of frame styles

Документация по типам членов

Перечисление 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API