Sur cette page

QStyleOption Class

La classe QStyleOption stocke les paramètres utilisés par les fonctions QStyle. Plus d'informations...

En-tête : #include <QStyleOption>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritée par :
16 types

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

Types publics

enum OptionType { SO_Button, SO_ComboBox, SO_Complex, SO_Default, SO_DockWidget, …, SO_ComplexCustomBase }
enum StyleOptionType { Type }
enum StyleOptionVersion { Version }

Fonctions publiques

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

Variables publiques

Qt::LayoutDirection direction
QFontMetrics fontMetrics
QPalette palette
QRect rect
QStyle::State state
QObject *styleObject
int type
int version
T qstyleoption_cast(QStyleOption *option)
T qstyleoption_cast(const QStyleOption *option)

Description détaillée

QStyleOption et ses sous-classes contiennent toutes les informations dont les fonctions de QStyle ont besoin pour dessiner un élément graphique.

Pour des raisons de performance, il y a peu de fonctions membres et l'accès aux variables membres est direct (c'est-à-dire en utilisant l'opérateur . ou -> ). Cela rend les structures simples à utiliser et souligne le fait qu'il s'agit simplement de paramètres utilisés par les fonctions de style.

L'appelant d'une fonction QStyle crée généralement des objets QStyleOption sur la pile. Ceci, combiné à l'utilisation extensive par Qt XML du partage implicite pour des types tels que QString, QPalette, et QColor, garantit qu'aucune allocation de mémoire n'a lieu inutilement.

L'extrait de code suivant montre comment utiliser une sous-classe spécifique de QStyleOption pour peindre un bouton-poussoir :

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);
}

Dans notre exemple, le contrôle est un QStyle::CE_PushButton, et selon la documentation QStyle::drawControl(), la classe correspondante est QStyleOptionButton.

Lorsque vous réimplémentez les fonctions QStyle qui prennent un paramètre QStyleOption, il est souvent nécessaire de faire passer la QStyleOption dans une sous-classe. Par sécurité, vous pouvez utiliser qstyleoption_cast() pour vous assurer que le type du pointeur est correct. Par exemple, la fonction

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) {
            // ...
        }
    }
    // ...
}

La fonction qstyleoption_cast() renvoie 0 si l'objet vers lequel pointe option n'est pas du bon type.

Voir également QStyle et QStylePainter.

Documentation sur les types de membres

enum QStyleOption::OptionType

Cette énumération est utilisée en interne par QStyleOption, ses sous-classes et qstyleoption_cast() pour déterminer le type d'option de style. En général, vous n'avez pas à vous en préoccuper, sauf si vous souhaitez créer votre propre sous-classe QStyleOption et vos propres styles.

ConstanteValeurDescription
QStyleOption::SO_Button2QStyleOptionButton
QStyleOption::SO_ComboBox0xf0004QStyleOptionComboBox
QStyleOption::SO_Complex0xf0000QStyleOptionComplex
QStyleOption::SO_Default0QStyleOption
QStyleOption::SO_DockWidget9QStyleOptionDockWidget
QStyleOption::SO_FocusRect1QStyleOptionFocusRect
QStyleOption::SO_Frame5QStyleOptionFrame
QStyleOption::SO_GraphicsItem15QStyleOptionGraphicsItem
QStyleOption::SO_GroupBox0xf0006QStyleOptionGroupBox
QStyleOption::SO_Header8QStyleOptionHeader
QStyleOption::SO_MenuItem4QStyleOptionMenuItemV2
QStyleOption::SO_ProgressBar6QStyleOptionProgressBar
QStyleOption::SO_RubberBand13QStyleOptionRubberBand
QStyleOption::SO_SizeGrip0xf0007QStyleOptionSizeGrip
QStyleOption::SO_Slider0xf0001QStyleOptionSlider
QStyleOption::SO_SpinBox0xf0002QStyleOptionSpinBox
QStyleOption::SO_Tab3QStyleOptionTab
QStyleOption::SO_TabBarBase12QStyleOptionTabBarBase
QStyleOption::SO_TabWidgetFrame11QStyleOptionTabWidgetFrame
QStyleOption::SO_TitleBar0xf0005QStyleOptionTitleBar
QStyleOption::SO_ToolBar14QStyleOptionToolBar
QStyleOption::SO_ToolBox7QStyleOptionToolBox
QStyleOption::SO_ToolButton0xf0003QStyleOptionToolButton
QStyleOption::SO_ViewItem10QStyleOptionViewItem (utilisée dans les entretiens)

Les valeurs suivantes sont utilisées pour les contrôles personnalisés :

ConstanteValeurValeur constante Description
QStyleOption::SO_CustomBase0xf00Réservé aux QStyleOptions personnalisées ; toutes les valeurs des contrôles personnalisés doivent être supérieures à cette valeur.
QStyleOption::SO_ComplexCustomBase0xf000000Réservé aux QStyleOptions personnalisées ; toutes les valeurs des contrôles complexes personnalisés doivent être supérieures à cette valeur.

Voir aussi type.

enum QStyleOption::StyleOptionType

Cette énumération est utilisée pour contenir des informations sur le type de l'option de style et est définie pour chaque sous-classe de QStyleOption.

ConstanteValeurDescription
QStyleOption::TypeSO_DefaultType d'option de style fournie (SO_Default pour cette classe).

Le type est utilisé en interne par QStyleOption, ses sous-classes et qstyleoption_cast() pour déterminer le type de l'option de style. En général, vous n'avez pas besoin de vous en préoccuper, sauf si vous souhaitez créer votre propre sous-classe QStyleOption et vos propres styles.

Voir aussi StyleOptionVersion.

enum QStyleOption::StyleOptionVersion

Cette énumération est utilisée pour contenir des informations sur la version de l'option de style et est définie pour chaque sous-classe de QStyleOption.

ConstanteValeurDescription de l'option
QStyleOption::Version11

La version est utilisée par les sous-classes de QStyleOption pour implémenter des extensions sans rompre la compatibilité. Si vous utilisez qstyleoption_cast(), vous n'avez normalement pas besoin de la vérifier.

Voir aussi StyleOptionType.

Documentation des fonctions membres

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

Construit une QStyleOption avec les adresses version et type spécifiées.

La version n'a pas de signification particulière pour QStyleOption ; elle peut être utilisée par les sous-classes pour distinguer les différentes versions d'un même type d'option.

La variable membre state est initialisée à QStyle::State_None.

Voir également version et type.

QStyleOption::QStyleOption(const QStyleOption &other)

Construit une copie de other.

[noexcept] QStyleOption::~QStyleOption()

Détruit cet objet d'option de style.

void QStyleOption::initFrom(const QWidget *widget)

Initialise les variables membres state, direction, rect, palette, fontMetrics et styleObject en fonction de la valeur spécifiée widget.

Il s'agit d'une fonction de commodité ; les variables membres peuvent également être initialisées manuellement.

Voir aussi QWidget::layoutDirection(), QWidget::rect(), QWidget::palette() et QWidget::fontMetrics().

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

Attribuer other à ce QStyleOption.

Documentation sur les variables membres

Qt::LayoutDirection QStyleOption::direction

Cette variable contient la direction de mise en page du texte qui doit être utilisée pour dessiner le texte dans le contrôle

Par défaut, la direction de la mise en page est Qt::LeftToRight.

Voir également initFrom().

QFontMetrics QStyleOption::fontMetrics

Cette variable contient les métriques de police qui doivent être utilisées pour dessiner du texte dans le contrôle

Par défaut, la police par défaut de l'application est utilisée.

Voir également initFrom().

QPalette QStyleOption::palette

Cette variable contient la palette qui doit être utilisée pour peindre le contrôle

Par défaut, la palette par défaut de l'application est utilisée.

Voir également initFrom().

QRect QStyleOption::rect

Cette variable contient la surface qui doit être utilisée pour divers calculs et peintures

Cette variable peut avoir des significations différentes selon les types d'éléments. Par exemple, pour un élément QStyle::CE_PushButton, il s'agira du rectangle correspondant à l'ensemble du bouton, tandis que pour un élément QStyle::CE_PushButtonLabel, il s'agira uniquement de la zone correspondant à l'étiquette du bouton-poussoir.

La valeur par défaut est un rectangle nul, c'est-à-dire un rectangle dont la largeur et la hauteur sont fixées à 0.

Voir aussi initFrom().

QStyle::State QStyleOption::state

Cette variable contient les indicateurs de style utilisés lors de l'affichage du contrôle

La valeur par défaut est QStyle::State_None.

Voir aussi initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl() et QStyle::State.

QObject *QStyleOption::styleObject

Cette variable contient l'objet à styliser

Les styles intégrés prennent en charge les types suivants : QWidget, QGraphicsObject et QQuickItem.

Voir également initFrom().

int QStyleOption::type

Cette variable contient le type d'option de l'option de style

La valeur par défaut est SO_Default.

Voir aussi OptionType.

int QStyleOption::version

Cette variable contient la version de l'option de style

Cette valeur peut être utilisée par les sous-classes pour implémenter des extensions sans rompre la compatibilité. Si vous utilisez la fonction qstyleoption_cast(), vous n'avez normalement pas besoin de la vérifier.

La valeur par défaut est 1.

Non-membres apparentés

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

Renvoie un T ou nullptr en fonction du type de option.

Il s'agit d'une fonction surchargée.

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

Renvoie un T ou nullptr en fonction de type et version du option donné.

Exemple :

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) {
            // ...
        }
    }
    // ...
}

Voir aussi QStyleOption::type et QStyleOption::version.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.