Spec-Zone.ru › Qt 5.15

Класс QFrame

Класс QFrame — базовый класс виджетов, которые могут иметь рамку. Подробнее...

Заголовок: #include <QFrame>
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

Защищённые функции

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 также можно использовать напрямую для создания простых фреймов-заполнителей без содержимого.

Стиль рамки определяется формой рамки (frame shape) и стилем тени (shadow style), которые используются для визуального разделения рамки от окружающих виджетов. Эти свойства можно установить вместе с помощью функции setFrameStyle() и прочитать с помощью функции frameStyle().

Формы рамок — NoFrame, Box, Panel, StyledPanel, HLine и VLine; стили теней — Plain, Raised и Sunken.

В виджете рамки есть три атрибута, описывающие толщину границы: lineWidth, midLineWidth и frameWidth.

  • Ширина линии — ширина границы рамки. Её можно изменить, чтобы настроить внешний вид рамки.
  • Ширина средней линии определяет ширину дополнительной линии в середине рамки, которая использует третий цвет для получения специального трёхмерного эффекта. Обратите внимание, что средняя линия отображается только для рамок Box, HLine и VLine, которые подняты или опущены.
  • Ширина рамки определяется стилем рамки, и функция frameWidth() используется для получения значения, определённого для используемого стиля.

Отступ между рамкой и содержимым рамки можно настроить с помощью функции QWidget::setContentsMargins().

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

Table of frame styles

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

Перечисление QFrame::Shadow

Это перечисление определяет типы теней, используемые для создания трёхмерного эффекта для рамок.

Константа Значение Описание
QFrame::Plain 0x0010 рамка и содержимое выглядят на одном уровне с окружающей средой; рисуется с использованием цвета палитры QPalette::WindowText (без какого-либо трёхмерного эффекта)
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().

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

[protected] 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-5.15/qframe.html

Spec-Zone.ru

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