QStyleOption Class
Die Klasse „QStyleOption“ speichert die Parameter, die von den Funktionen „ QStyle “ verwendet werden. Mehr...
| Header: | #include <QStyleOption> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Vererbt an: | 16 TypenQStyleOptionButton, QStyleOptionComplex, QStyleOptionDockWidget, QStyleOptionFocusRect, QStyleOptionFrame, QStyleOptionGraphicsItem, QStyleOptionHeader, QStyleOptionMenuItem, QStyleOptionProgressBar, QStyleOptionRubberBand, QStyleOptionTab, QStyleOptionTabBarBase, QStyleOptionTabWidgetFrame, QStyleOptionToolBar, QStyleOptionToolBox sowie 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 |
Verwandte Nicht-Mitglieder
| 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
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 | QStyleOptionMenuItemV2 |
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 (wird in Interviews verwendet) |
Die folgenden Werte werden für benutzerdefinierte Steuerelemente verwendet:
| Konstante | Wert | Beschreibung |
|---|---|---|
QStyleOption::SO_CustomBase | 0xf00 | Reserviert für benutzerdefinierte QStyleOptions; alle Werte für benutzerdefinierte Steuerelemente müssen über diesem Wert liegen |
QStyleOption::SO_ComplexCustomBase | 0xf000000 | Reserviert 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QStyleOption::Type | SO_Default | Der 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QStyleOption::Version | 1 | 1 |
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.