Auf dieser Seite

QStyleOption Class

Die Klasse „QStyleOption“ speichert die Parameter, die von den Funktionen „ QStyle “ verwendet werden. Mehr...

Öffentliche Typen

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

Öffentliche Funktionen

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

Öffentliche Variablen

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)

Ausführliche Beschreibung

QStyleOption und seine Unterklassen enthalten alle Informationen, die die Funktionen von „ QStyle “ benötigen, um ein grafisches Element zu zeichnen.

Aus Leistungsgründen gibt es nur wenige Mitgliedsfunktionen, und der Zugriff auf die Mitgliedsvariablen erfolgt direkt (d. h. über den Operator ` . ` oder ` -> `). Dies macht die Strukturen einfach in der Anwendung und unterstreicht, dass es sich lediglich um Parameter handelt, die von den Stilfunktionen verwendet werden.

Der Aufrufer einer „ QStyle “-Funktion erstellt in der Regel „QStyleOption“-Objekte auf dem Stack. In Kombination mit der umfassenden Nutzung impliziter gemeinsamen Nutzung (implicit sharing) durch Qt für Typen wie „ QString “, „ QPalette “ und „ QColor “ wird so sichergestellt, dass keine unnötige Speicherzuweisung stattfindet.

Der folgende Codeausschnitt zeigt, wie man eine bestimmte QStyleOption-Unterklasse verwendet, um eine Schaltfläche zu zeichnen:

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

In unserem Beispiel handelt es sich bei dem Steuerelement um ein „ QStyle::CE_PushButton “, und gemäß der Dokumentation zu ` QStyle::drawControl()` ist die entsprechende Klasse ` QStyleOptionButton`.

Bei der Neuimplementierung von ` QStyle `-Funktionen, die einen `QStyleOption`-Parameter entgegennehmen, muss man die `QStyleOption` oft in eine Unterklasse umwandeln. Zur Sicherheit kann man ` qstyleoption_cast()` verwenden, um sicherzustellen, dass der Zeigertyp korrekt ist. Zum Beispiel:

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

Die Funktion ` qstyleoption_cast()` gibt 0 zurück, wenn das Objekt, auf das ` option ` zeigt, nicht vom richtigen Typ ist.

Siehe auch „ QStyle “ und „ QStylePainter “.

Dokumentation zu Mitgliedstypen

enum QStyleOption::OptionType

Diese Enumeration wird intern von ` QStyleOption`, dessen Unterklassen sowie von ` qstyleoption_cast()` verwendet, um den Typ einer Stiloption zu bestimmen. Im Allgemeinen müssen Sie sich darüber keine Gedanken machen, es sei denn, Sie möchten eine eigene Unterklasse von ` QStyleOption ` und eigene Stile erstellen.

KonstanteWertBeschreibung
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 (wird in Interviews verwendet)

Die folgenden Werte werden für benutzerdefinierte Steuerelemente verwendet:

KonstanteWertBeschreibung
QStyleOption::SO_CustomBase0xf00Reserviert für benutzerdefinierte QStyleOptions; alle Werte für benutzerdefinierte Steuerelemente müssen über diesem Wert liegen
QStyleOption::SO_ComplexCustomBase0xf000000Reserviert für benutzerdefinierte QStyleOptions; alle Werte für benutzerdefinierte komplexe Steuerelemente müssen über diesem Wert liegen

Siehe auch „ type “.

enum QStyleOption::StyleOptionType

Diese Enumeration dient zur Speicherung von Informationen über den Typ der Stiloption und ist für jede Unterklasse von ` QStyleOption ` definiert.

KonstanteWertBeschreibung
QStyleOption::TypeSO_DefaultDer Typ der bereitgestellten Stiloption (SO_Default für diese Klasse).

Der Typ wird intern von ` QStyleOption`, seinen Unterklassen und ` qstyleoption_cast()` verwendet, um den Typ der Stiloption zu ermitteln. Im Allgemeinen müssen Sie sich darüber keine Gedanken machen, es sei denn, Sie möchten eine eigene Unterklasse von ` QStyleOption ` und eigene Stile erstellen.

Siehe auch StyleOptionVersion.

enum QStyleOption::StyleOptionVersion

Diese Enumeration dient zur Speicherung von Informationen über die Version der Stiloption und ist für jede Unterklasse von ` QStyleOption ` definiert.

KonstanteWertBeschreibung
QStyleOption::Version11

Die Version wird von Unterklassen von ` QStyleOption ` verwendet, um Erweiterungen zu implementieren, ohne die Kompatibilität zu beeinträchtigen. Wenn Sie ` qstyleoption_cast()` verwenden, müssen Sie dies normalerweise nicht überprüfen.

Siehe auch StyleOptionType.

Dokumentation der Mitgliedsfunktionen

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

Erstellt ein `QStyleOption`-Objekt mit den angegebenen Werten für ` version ` und ` type`.

Die Version hat für `QStyleOption` keine besondere Bedeutung; sie kann von Unterklassen verwendet werden, um zwischen verschiedenen Versionen desselben Optionstyps zu unterscheiden.

Die Membervariable ` state ` wird auf ` QStyle::State_None` initialisiert.

Siehe auch „ version “ und „ type “.

QStyleOption::QStyleOption(const QStyleOption &other)

Erstellt eine Kopie von „ other “.

[noexcept] QStyleOption::~QStyleOption()

Löscht dieses Stiloptionsobjekt.

void QStyleOption::initFrom(const QWidget *widget)

Initialisiert die Membervariablen „ state “, „ direction “, „ rect “, „ palette “, „ fontMetrics “ und „ styleObject “ auf der Grundlage des angegebenen „ widget “.

Dies ist eine Komfortfunktion; die Member-Variablen können auch manuell initialisiert werden.

Siehe auch QWidget::layoutDirection(), QWidget::rect(), QWidget::palette() und QWidget::fontMetrics().

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

Weisen Sie „ other “ diesem „ QStyleOption “ zu.

Dokumentation zu Member-Variablen

Qt::LayoutDirection QStyleOption::direction

Diese Variable enthält die Textausrichtungsrichtung, die beim Zeichnen von Text im Steuerelement verwendet werden soll

Standardmäßig ist die Ausrichtungsrichtung „ Qt::LeftToRight “.

Siehe auch ` initFrom()`.

QFontMetrics QStyleOption::fontMetrics

Diese Variable enthält die Schriftmetriken, die beim Zeichnen von Text im Steuerelement verwendet werden sollen

Standardmäßig wird die Standardschriftart der Anwendung verwendet.

Siehe auch ` initFrom()`.

QPalette QStyleOption::palette

Diese Variable enthält die Palette, die beim Ausmalen des Steuerelements verwendet werden soll

Standardmäßig wird die Standardpalette der Anwendung verwendet.

Siehe auch ` initFrom()`.

QRect QStyleOption::rect

Diese Variable enthält den Bereich, der für verschiedene Berechnungen und Zeichnungen verwendet werden soll

Dies kann für verschiedene Elementtypen unterschiedliche Bedeutungen haben. Bei einem „ QStyle::CE_PushButton “-Element wäre dies beispielsweise das Rechteck für die gesamte Schaltfläche, während es bei einem „ QStyle::CE_PushButtonLabel “-Element nur der Bereich für die Beschriftung der Drucktaste wäre.

Der Standardwert ist ein Null-Rechteck, d. h. ein Rechteck, bei dem sowohl die Breite als auch die Höhe auf 0 gesetzt sind.

Siehe auch initFrom().

QStyle::State QStyleOption::state

Diese Variable enthält die Stil-Flags, die beim Zeichnen des Steuerelements verwendet werden

Der Standardwert lautet „ QStyle::State_None “.

Siehe auch initFrom(), QStyle::drawPrimitive(), QStyle::drawControl(), QStyle::drawComplexControl() und QStyle::State.

QObject *QStyleOption::styleObject

Diese Variable enthält das Objekt, dessen Darstellung angepasst wird

Die integrierten Stile unterstützen die folgenden Typen: „ QWidget “, „ QGraphicsObject “ und „ QQuickItem “.

Siehe auch initFrom().

int QStyleOption::type

Diese Variable enthält den Optionstyp der Stiloption

Der Standardwert ist „ SO_Default “.

Siehe auch „ OptionType “.

int QStyleOption::version

Diese Variable enthält die Version der Stiloption

Dieser Wert kann von Unterklassen verwendet werden, um Erweiterungen zu implementieren, ohne die Kompatibilität zu beeinträchtigen. Wenn Sie die Funktion ` qstyleoption_cast()` verwenden, müssen Sie ihn normalerweise nicht überprüfen.

Der Standardwert ist 1.

Verwandte Nicht-Mitglieder

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

Gibt je nach den Werten von „ type “ und „ version “ des angegebenen „ option “ einen „T“- oder „ nullptr “-Wert zurück.

Beispiel:

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

Siehe auch „ QStyleOption::type “ und „ QStyleOption::version “.

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

Gibt je nach Typ des übergebenen ` option` einen `T` oder ` nullptr ` zurück.

Dies ist eine überladene Funktion.

© 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.