Spec-Zone.ru › Qt 5.11

Класс QStyleOption

Класс QStyleOption хранит параметры, используемые функциями QStyle. Подробнее...

Заголовок: #include <QStyleOption>
qmake: QT += widgets
Наследуется от:

QStyleOptionButton, QStyleOptionComplex, QStyleOptionDockWidget, QStyleOptionFocusRect, QStyleOptionFrame, QStyleOptionGraphicsItem, QStyleOptionHeader, QStyleOptionMenuItem, QStyleOptionProgressBar, QStyleOptionRubberBand, QStyleOptionTab, QStyleOptionTabBarBase, QStyleOptionTabWidgetFrame, QStyleOptionToolBar, QStyleOptionToolBox и QStyleOptionViewItem

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Публичные типы

перечисление OptionType { SO_Button, SO_ComboBox, SO_Complex, SO_Default, ..., SO_ComplexCustomBase }
перечисление StyleOptionType { Type }
перечисление StyleOptionVersion { Version }

Публичные функции

QStyleOption(int version = QStyleOption::Version, int type = SO_Default)
QStyleOption(const QStyleOption &other)
~QStyleOption()
void initFrom(const QWidget *widget)
QStyleOption & operator=(const QStyleOption &other)

Публичные переменные

Qt::LayoutDirection direction
QFontMetrics fontMetrics
QPalette palette
QRect rect
QStyle::State state
QObject * styleObject
int type
int version

Связанные нечлены

T qstyleoption_cast(const QStyleOption *option)
T qstyleoption_cast(QStyleOption *option)

Подробное описание

Класс QStyleOption хранит параметры, используемые функциями QStyle.

QStyleOption и его подклассы содержат всю информацию, необходимую функциям QStyle для отрисовки графического элемента.

По соображениям производительности, в нём мало функций-членов, и доступ к переменным-членам осуществляется напрямую (т. е. с помощью оператора . или ->). Этот низкоуровневый стиль делает структуры простыми в использовании и подчеркивает, что это просто параметры, используемые функциями стиля.

Вызывающий функцию QStyle обычно создаёт объекты QStyleOption в стеке. Это в сочетании с широким использованием Qt неявного совместного использования для типов, таких как QString, QPalette и QColor, гарантирует, что нет необходимости в выделении памяти.

Следующий фрагмент кода демонстрирует, как использовать конкретный подкласс QStyleOption для отрисовки кнопки:

void MyPushButton::paintEvent(QPaintEvent *)
{
    QStyleOptionButton option;
    option.initFrom(this);
    option.state = isDown() ? QStyle::State_Sunken : QStyle::State_Raised;
    if (isDefault())
        option.features |= QStyleOptionButton::DefaultButton;
    option.text = text();
    option.icon = icon();

    QPainter painter(this);
    style()->drawControl(QStyle::CE_PushButton, &option, &painter, this);
}

В нашем примере элемент управления является QStyle::CE_PushButton, и, согласно документации QStyle::drawControl(), соответствующим классом является QStyleOptionButton.

При реализации функций QStyle, принимающих параметр QStyleOption, часто необходимо привести QStyleOption к подклассу. Для безопасности можно использовать qstyleoption_cast(), чтобы убедиться, что тип указателя правильный. Например:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

Функция qstyleoption_cast() вернёт 0, если объект, на который option указывает, не является нужного типа.

Пример использования стилей см. в примере Styles.

См. также QStyle и QStylePainter.

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

перечисление QStyleOption::OptionType

Это перечисление используется внутри класса QStyleOption, его подклассов и функции qstyleoption_cast() для определения типа опции стиля. Как правило, вам об этом не нужно беспокоиться, если вы не хотите создать собственный подкласс QStyleOption и свои собственные стили.

Константа Значение Описание
QStyleOption::SO_Button 2 QStyleOptionButton
QStyleOption::SO_ComboBox 0xf0004 QStyleOptionComboBox
QStyleOption::SO_Complex 0xf0000 QStyleOptionComplex
QStyleOption::SO_Default 0 QStyleOption
QStyleOption::SO_DockWidget 9 QStyleOptionDockWidget
QStyleOption::SO_FocusRect 1 QStyleOptionFocusRect
QStyleOption::SO_Frame 5 QStyleOptionFrame
QStyleOption::SO_GraphicsItem 15 QStyleOptionGraphicsItem
QStyleOption::SO_GroupBox 0xf0006 QStyleOptionGroupBox
QStyleOption::SO_Header 8 QStyleOptionHeader
QStyleOption::SO_MenuItem 4 QStyleOptionMenuItem
QStyleOption::SO_ProgressBar 6 QStyleOptionProgressBar
QStyleOption::SO_RubberBand 13 QStyleOptionRubberBand
QStyleOption::SO_SizeGrip 0xf0007 QStyleOptionSizeGrip
QStyleOption::SO_Slider 0xf0001 QStyleOptionSlider
QStyleOption::SO_SpinBox 0xf0002 QStyleOptionSpinBox
QStyleOption::SO_Tab 3 QStyleOptionTab
QStyleOption::SO_TabBarBase 12 QStyleOptionTabBarBase
QStyleOption::SO_TabWidgetFrame 11 QStyleOptionTabWidgetFrame
QStyleOption::SO_TitleBar 0xf0005 QStyleOptionTitleBar
QStyleOption::SO_ToolBar 14 QStyleOptionToolBar
QStyleOption::SO_ToolBox 7 QStyleOptionToolBox
QStyleOption::SO_ToolButton 0xf0003 QStyleOptionToolButton
QStyleOption::SO_ViewItem 10 QStyleOptionViewItem (используется в интервью)

Следующие значения используются для пользовательских элементов управления:

Константа Значение Описание
QStyleOption::SO_CustomBase 0xf00 Зарезервировано для пользовательских QStyleOptions; все значения пользовательских элементов управления должны быть выше этого значения
QStyleOption::SO_ComplexCustomBase 0xf000000 Зарезервировано для пользовательских QStyleOptions; все значения пользовательских сложных элементов управления должны быть выше этого значения

См. также тип.

перечисление QStyleOption::StyleOptionType

Это перечисление используется для хранения информации о типе параметра стиля и определено для каждого подкласса QStyleOption.

Константа Значение Описание
QStyleOption::Type SO_Default Тип предоставляемого параметра стиля (SO_Default для этого класса).

Тип используется внутри QStyleOption, его подклассов и qstyleoption_cast() для определения типа параметра стиля. Как правило, вам не нужно беспокоиться об этом, если вы не хотите создать свой собственный подкласс QStyleOption и свои собственные стили.

См. также StyleOptionVersion.

перечисление QStyleOption::StyleOptionVersion

Это перечисление используется для хранения информации о версии параметра стиля и определено для каждого подкласса QStyleOption.

Константа Значение Описание
QStyleOption::Version 1 1

Версия используется подклассами QStyleOption для реализации расширений без нарушения совместимости. Если вы используете qstyleoption_cast(), вам обычно не нужно его проверять.

См. также StyleOptionType.

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

QStyleOption::QStyleOption(int version = QStyleOption::Version, int type = SO_Default)

Создаёт QStyleOption со специфицированной version и type.

Версия не имеет специального значения для QStyleOption; она может использоваться подклассами для различения различных версий одного и того же типа параметра.

Переменная-член state инициализируется значением QStyle::State_None.

См. также version и type.

QStyleOption::QStyleOption(const QStyleOption &other)

Создаёт копию other.

QStyleOption::~QStyleOption()

Удаляет этот объект параметра стиля.

void QStyleOption::initFrom(const QWidget *widget)

Инициализирует переменные-члены state, direction, rect, palette, fontMetrics и styleObject на основе указанного widget.

Это удобная функция; переменные-члены также можно инициализировать вручную.

Функция была введена в Qt 4.1.

См. также QWidget::layoutDirection(), QWidget::rect(), QWidget::palette(), и QWidget::fontMetrics().

QStyleOption &QStyleOption::operator=(const QStyleOption &other)

Присваивает other этому QStyleOption.

END_OF_DOCUMENT_MARKER ```

Документация по переменным-членам

Qt::LayoutDirection QStyleOption::direction

Эта переменная содержит направление выравнивания текста, которое следует использовать при отрисовке текста в элементе управления.

По умолчанию направление выравнивания — Qt::LeftToRight.

См. также initFrom().

QFontMetrics QStyleOption::fontMetrics

Эта переменная содержит метрики шрифта, которые следует использовать при отрисовке текста в элементе управления.

По умолчанию используется шрифт по умолчанию приложения.

См. также initFrom().

QPalette QStyleOption::palette

Эта переменная содержит палитру, которую следует использовать при отрисовке элемента управления.

По умолчанию используется палитра по умолчанию приложения.

См. также initFrom().

QRect QStyleOption::rect

Эта переменная содержит область, которая должна использоваться для различных вычислений и отрисовки.

Это может иметь разное значение для разных типов элементов. Например, для элемента QStyle::CE_PushButton это будет прямоугольник для всей кнопки, а для элемента QStyle::CE_PushButtonLabel — только область для метки кнопки.

Значение по умолчанию — нулевой прямоугольник, то есть прямоугольник с шириной и высотой, равными 0.

См. также initFrom().

QStyle::State QStyleOption::state

Эта переменная содержит флаги стиля, которые используются при отрисовке элемента управления.

Значение по умолчанию — QStyle::State_None.

См. также initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl(), и QStyle::State.

QObject *QStyleOption::styleObject

Эта переменная содержит объект, который должен быть стилизован.

Встроенные стили поддерживают следующие типы: QWidget, QGraphicsObject и QQuickItem.

См. также initFrom().

int QStyleOption::type

Эта переменная содержит тип опции стиля.

Значение по умолчанию — SO_Default.

См. также OptionType.

int QStyleOption::version

Эта переменная содержит версию опции стиля.

Это значение может использоваться подклассами для реализации расширений без нарушения совместимости. Если вы используете функцию qstyleoption_cast(), вам обычно не нужно проверять это значение.

Значение по умолчанию — 1.

Связанные нечлены

T qstyleoption_cast(const QStyleOption *option)

Возвращает T или 0 в зависимости от type и version данного option.

Пример:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

См. также QStyleOption::type и QStyleOption::version.

T qstyleoption_cast(QStyleOption *option)

Это перегруженная функция.

Возвращает T или 0 в зависимости от типа данного option.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qstyleoption.html

Spec-Zone.ru

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