QStyleOption Class

Die Klasse QStyleOption speichert die von den Funktionen QStyle verwendeten Parameter. Mehr...

Kopfzeile: #include <QStyleOption>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt von:
16 Typen

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

Ö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(QStyleOption *option)
T qstyleoption_cast(const QStyleOption *option)

Detaillierte Beschreibung

QStyleOption und seine Unterklassen enthalten alle Informationen, die QStyle Funktionen zum Zeichnen eines grafischen Elements benötigen.

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

Der Aufrufer einer QStyle Funktion erzeugt normalerweise QStyleOption Objekte auf dem Stack. Dies in Kombination mit Qt's umfangreicher Verwendung von implizitem Sharing für Typen wie QString, QPalette und QColor stellt sicher, dass keine unnötige Speicherzuweisung stattfindet.

Der folgende Codeschnipsel zeigt, wie eine bestimmte QStyleOption-Unterklasse verwendet wird, um einen Druckknopf 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 ist das Steuerelement ein QStyle::CE_PushButton, und laut der Dokumentation QStyle::drawControl() ist die entsprechende Klasse QStyleOptionButton.

Bei der Neuimplementierung von QStyle Funktionen, die einen QStyleOption-Parameter annehmen, müssen Sie die QStyleOption oft auf eine Unterklasse übertragen. Zur Sicherheit können Sie qstyleoption_cast() verwenden, um sicherzustellen, dass der Zeigertyp korrekt ist. Ein 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 der Mitgliedstypen

enum QStyleOption::OptionType

Dieses Enum wird intern von QStyleOption, seinen Unterklassen und qstyleoption_cast() verwendet, um den Typ der Stiloption zu bestimmen. Im Allgemeinen müssen Sie sich nicht darum kümmern, es sei denn, Sie wollen Ihre eigene QStyleOption Unterklasse und Ihre eigenen 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_MenuItem4QStyleOptionMenuItem
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 (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 Aufzählung wird verwendet, um Informationen über den Typ der Stiloption zu speichern, und ist für jede Unterklasse von QStyleOption definiert.

KonstanteWertBeschreibung
QStyleOption::TypeSO_DefaultDer Typ der angebotenen 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 bestimmen. Im Allgemeinen müssen Sie sich darüber keine Gedanken machen, es sei denn, Sie wollen Ihre eigene QStyleOption Unterklasse und Ihre eigenen Stile erstellen.

Siehe auch StyleOptionVersion.

enum QStyleOption::StyleOptionVersion

Diese Aufzählung wird verwendet, um Informationen über die Version der Stiloption zu speichern, und ist für jede Unterklasse von QStyleOption definiert.

KonstanteWertBeschreibung
QStyleOption::Version11

Die Version wird von QStyleOption Unterklassen verwendet, um Erweiterungen zu implementieren, ohne die Kompatibilität zu verletzen. Wenn Sie qstyleoption_cast() verwenden, brauchen Sie sie normalerweise nicht zu überprüfen.

Siehe auch StyleOptionType.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert eine QStyleOption mit der angegebenen version und type.

Die Version hat keine besondere Bedeutung für QStyleOption; 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)

Konstruiert eine Kopie von other.

[noexcept] QStyleOption::~QStyleOption()

Zerstört dieses Stiloptionsobjekt.

void QStyleOption::initFrom(const QWidget *widget)

Initialisiert die Mitgliedsvariablen state, direction, rect, palette, fontMetrics und styleObject basierend auf der angegebenen widget.

Dies ist eine Komfortfunktion; die Mitgliedsvariablen 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 dieser QStyleOption zu.

Dokumentation der Mitgliedsvariablen

Qt::LayoutDirection QStyleOption::direction

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

Standardmäßig ist die Layout-Richtung 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 Malen des Steuerelements verwendet werden soll

Standardmäßig wird die Standardpalette der Anwendung verwendet.

Siehe auch initFrom().

QRect QStyleOption::rect

Diese Variable enthält die Fläche, die für verschiedene Berechnungen und Malereien verwendet werden soll

Dies kann für verschiedene Arten von Elementen unterschiedliche Bedeutungen haben. Bei einem Element QStyle::CE_PushButton wäre dies beispielsweise das Rechteck für die gesamte Schaltfläche, während es bei einem Element QStyle::CE_PushButtonLabel 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 Stilflags, die beim Zeichnen des Steuerelements verwendet werden

Der Standardwert ist QStyle::State_None.

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

QObject *QStyleOption::styleObject

Diese Variable enthält das Objekt, das gestylt werden soll

Die eingebauten 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, brauchen Sie sie normalerweise nicht zu überprüfen.

Der Standardwert ist 1.

Verwandte Nicht-Mitglieder

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

Dies ist eine überladene Funktion.

Gibt ein T oder nullptr zurück, je nach dem Typ des angegebenen option.

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

Gibt ein T oder nullptr zurück, abhängig von type und version des angegebenen option.

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.

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