Spec-Zone.ru › Qt

Класс QStyleOption

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

Заголовок: #include <QStyleOption>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
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_DockWidget, …, SO_ComplexCustomBase }
Перечисление StyleOptionType { Type }
Перечисление StyleOptionVersion { Version }

Функции публичного доступа

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

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

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 для отрисовки графического элемента.

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

Вызывающий функцию 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(const QStyleOption &other)

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

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

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

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

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

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

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

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

QStyleOption::~QStyleOption()

Уничтожает объект стиля.

void QStyleOption::initFrom(const QWidget *widget)

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

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

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

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.

Связанные внешние функции

template <typename T> T qstyleoption_cast(const QStyleOption *option)

Возвращает T или nullptr в зависимости от 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.

template <typename T> T qstyleoption_cast(QStyleOption *option)

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

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

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

Spec-Zone.ru

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