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 TypenQStyleOptionButton, 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 |
Verwandte Nicht-Mitglieder
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.
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 | 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 (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 Aufzählung wird verwendet, um Informationen über den Typ der Stiloption zu speichern, und ist für jede Unterklasse von QStyleOption definiert.
Konstante | Wert | Beschreibung |
---|---|---|
QStyleOption::Type | SO_Default | Der 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.
Konstante | Wert | Beschreibung |
---|---|---|
QStyleOption::Version | 1 | 1 |
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.
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.