Auf dieser Seite

QStyleKitStyle Class

Die Klasse „QStyleKitStyle“ wendet einen Qt Labs StyleKit-Stil auf „ Qt Widgets “ an. Mehr...

Header: #include <QStyleKitStyle>
CMake: find_package(Qt6 REQUIRED COMPONENTS LabsStyleKit)
target_link_libraries(mytarget PRIVATE Qt6::LabsStyleKit)
Seit: Qt 6.12
Erbt von: QCommonStyle

Eigenschaften

Öffentliche Funktionen

QStyleKitStyle()
QStyleKitStyle(const QString &filePath)
virtual ~QStyleKitStyle() override
QStringList availableThemeNames() const
QStringList customThemeNames() const
void setStylePath(const QString &filePath)
void setThemeName(const QString &themeName)
QString stylePath() const
QString themeName() const

Neu implementierte öffentliche Funktionen

virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w = nullptr) const override
virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override
virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override
virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *w = nullptr) const override
virtual int pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const override
virtual void polish(QApplication *app) override
virtual void polish(QPalette &palette) override
virtual void polish(QWidget *widget) override
virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = nullptr) const override
virtual QPalette standardPalette() const override
virtual int styleHint(QStyle::StyleHint sh, const QStyleOption *opt = nullptr, const QWidget *w = nullptr, QStyleHintReturn *shret = nullptr) const override
virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *w = nullptr) const override
virtual QRect subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = nullptr) const override
virtual void unpolish(QApplication *app) override
virtual void unpolish(QWidget *widget) override

Signale

void availableThemeNamesChanged(const QStringList &availableThemeNames)
void customThemeNamesChanged(const QStringList &customThemeNames)
void stylePathChanged(const QString &stylePath)
void themeNameChanged(const QString &themeName)

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *obj, QEvent *event) override

Detaillierte Beschreibung

QStyleKitStyle ist eine „ QStyle “-Implementierung, die eine „ StyleKit “- Style verwendet, um „ Qt Widgets “ zu gestalten. Die „ Style “ ist eine QML-Datei, die das visuelle Design (Farben, Größen, Radien, Rahmen und andere Eigenschaften) für jeden Widget-Typ und jeden Zustand deklarativ beschreibt. Diese Eigenschaftswerte steuern die Darstellung, die vollständig mit „ QPainter “ erfolgt. „ Qt Quick “ und der Szenengraph spielen bei der Darstellung keine Rolle.

Diese Trennung bedeutet, dass dieselbe QML-Datei „ Style “ sowohl „ Qt Quick Controls “ als auch „ Qt Widgets “ steuern kann, wobei eine einzige Designdefinition für beide Systeme verwendet wird.

Hinweis: StyleKit ist ein Qt-Labs-Modul, und seine API kann sich zwischen den einzelnen Qt-Versionen ändern.

Laden eines Stils

Ein Stil ist eine QML-Datei, deren Stammobjekt ein ` Style` ist. Um ihn zu laden, übergeben Sie den Dateipfad an den Konstruktor oder an ` setStylePath()`:

auto *style = new QStyleKitStyle(QStringLiteral(":/styles/MyStyle.qml"));
QApplication::setStyle(style);

Der Stil wird mit einem internen ` QQmlEngine ` geladen, der der `QStyleKitStyle`-Instanz gehört. Ist der Pfad ungültig oder handelt es sich bei dem Stammobjekt nicht um einen ` Style`, wird eine Warnung ausgegeben und der Stil verwendet einen Standard-Fallback-Stil, bis ein gültiges ` stylePath ` festgelegt wird.

Themen

Ein Stil kann ein oder mehrere benannte „ themes “ definieren. Das aktive Thema wird mit ` setThemeName()` ausgewählt; die Liste der verfügbaren Themen wird über ` availableThemeNames` bereitgestellt. Der spezielle Themenname ` System ` sorgt dafür, dass der Stil dem Farbschema der Plattform folgt: Wenn sich das Farbschema des Betriebssystems ändert, wird das aktive Thema automatisch neu erstellt und alle Widgets werden neu gestaltet.

Zuordnung von Widgets zu StyleKit-Steuerelementen

Jede „ Qt Widgets “-Klasse wird einem StyleKit-Steuerelementtyp zugeordnet, der bestimmt, welcher Eintrag in der „ Style “ für sie gilt. Verwenden Sie den entsprechenden Steuerelement-Eintrag, um die visuellen Eigenschaften für diesen Widget-Typ zu konfigurieren, einschließlich einzelner Teile des Widgets wie Hintergrund, Indikator, Griff usw. Eine vollständige Liste der anpassbaren Eigenschaften finden Sie unter ControlStyleProperties. Eigenschaften, die nicht in einem bestimmten Steuerelement-Eintrag festgelegt sind, werden über die Hierarchie der Steuerelementtypen zugewiesen: Beispielsweise wird button auf abstractButton zurückgesetzt, was wiederum auf control zurückgesetzt wird.

Widgets, die oben nicht aufgeführt sind, werden von `QStyleKitStyle` noch nicht unterstützt und werden von ` QCommonStyle` gezeichnet. Die Unterstützung für die übrigen Widgets ist für zukünftige Versionen geplant. Umgekehrt haben einige Steuerelement-Einträge in ` StylableControls ` kein Äquivalent in ` Qt Widgets ` und werden bei der Gestaltung von Widgets nicht berücksichtigt.

Unterelemente innerhalb eines Widgets

Einzelne Untersteuerelemente innerhalb eines Widgets können individuell gestaltet werden, da jedes einzelne einem separaten Steuerelement-Eintrag in der ` Style` zugeordnet ist:

UnterelementStyleKit-Steuerelement
QStyledItemDelegate Elemente – der Standard-Delegat für alle Qt-Elementansichten, einschließlich der Popup-Liste „ QComboBox “itemDelegate
Dieselben Elemente, sofern sie vom Benutzer markierbar sind (d. h. ein Markierungssymbol anzeigen)checkDelegate; für alles, was nicht explizit festgelegt ist, wird auf „ itemDelegate “ zurückgegriffen
Einzelne Registerkarten in einem QTabBartabButton
QMenu ElementemenuItem
Trennzeichen in einer QMenumenuSeparator
QMenuBar ElementemenuBarItem
Trennzeichen in einer QToolBartoolSeparator
Der Popup-Listen-Container „ QComboBox “popup

Bekannte Einschränkungen

QStyleKitStyle befindet sich in der Tech Preview. Die folgenden StyleKit-Funktionen werden derzeit bei der Verwendung mit „ Qt Widgets “ nicht unterstützt:

  • Schatten – Schatten werden nicht gerendert.
  • Skalierungsfaktor über 1,0 für den Hintergrund eines Steuerelements — Ein Widget kann nicht außerhalb seines eigenen Rechtecks gezeichnet werden, sodass der skalierte Hintergrund am Rand des Widgets abgeschnitten wird. Verwenden Sie „ margins “, um den Hintergrund einzurücken und Platz für seine Vergrößerung zu reservieren. Die Skalierung von Anzeigen, Griffen und Vordergrundbereichen bleibt davon unberührt.
  • Varianten — Die Festlegung einer „ StyleVariation “ für eine Widget-Instanz wird noch nicht unterstützt.
  • Benutzerdefinierte Steuerelemente – Die Gestaltung benutzerdefinierter Widgets mithilfe von „ CustomControl “ wird noch nicht unterstützt.
  • Benutzerdefinierte Delegaten – Die Eigenschaft „ delegate “ wird nicht verwendet; es wird immer die integrierte Darstellung angewendet.

Die Unterstützung dieser Funktionen ist für eine zukünftige Version geplant.

Siehe auch „ QStyle“ , „ QCommonStyle “, „Qt Labs StyleKit“, „ Style “ und „ Theme “.

Dokumentation zu den Eigenschaften

[read-only] availableThemeNames : QStringList

Diese Eigenschaft enthält die Liste der Themennamen, die von der geladenen „ Style “ bereitgestellt werden.

Diese Liste umfasst die integrierten Themen „ Light “ und „ Dark “ sowie alle benutzerdefinierten Themen, die durch den Stil definiert wurden.

Zugriffsfunktionen:

QStringList availableThemeNames() const

Notifier-Signal:

void availableThemeNamesChanged(const QStringList &availableThemeNames)

[read-only] customThemeNames : QStringList

Diese Eigenschaft enthält die Liste der benutzerdefinierten Themennamen, die durch die geladene Datei „ Style “ definiert wurden.

Im Gegensatz zu ` availableThemeNames` schließt diese Liste die integrierten Designs ` Light ` und ` Dark ` aus und enthält nur die vom Stil-Autor explizit definierten Designs. Gibt eine leere Liste zurück, wenn kein Stil geladen ist.

Zugriffsfunktionen:

QStringList customThemeNames() const

Notifier-Signal:

void customThemeNamesChanged(const QStringList &customThemeNames)

Siehe auch availableThemeNames und themeName.

stylePath : QString

Diese Eigenschaft enthält den Pfad zur QML- Style -Datei, die diesen Stil steuert.

Der Wert ist entweder ein Pfad zu einer lokalen Datei oder ein Pfad zu einer Datei im Ressourcen-Dateisystem (z. B. :/styles/MyStyle.qml). Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Anwendung aufgelöst. Die Datei muss eine QML-Komponente enthalten, deren Stammobjekt ein ` Style` ist. Durch das Setzen dieser Eigenschaft wird der Stil neu geladen; kann die neue Datei nicht geladen werden, bleibt der zuvor geladene Stil erhalten und es wird eine Warnung ausgegeben.

Zugriffsfunktionen:

QString stylePath() const
void setStylePath(const QString &filePath)

Notifier-Signal:

void stylePathChanged(const QString &stylePath)

themeName : QString

Diese Eigenschaft enthält den Namen des aktiven Themes.

Der Wert muss einer der Einträge unter availableThemeNames sein oder der spezielle Name „ System “, um das Farbschema der Plattform zu übernehmen. Durch das Setzen dieser Eigenschaft werden alle Widgets aktualisiert und entsprechend dem neuen Design neu gezeichnet.

Zugriffsfunktionen:

QString themeName() const
void setThemeName(const QString &themeName)

Notifier-Signal:

void themeNameChanged(const QString &themeName)

Dokumentation der Mitgliedsfunktionen

QStyleKitStyle::QStyleKitStyle()

Erstellt ein `QStyleKitStyle`-Objekt, für das noch kein Stil geladen wurde.

Verwenden Sie ` setStylePath()`), um nach der Erstellung ein QML- Style -Objekt zu laden. Solange kein Stil geladen ist, verwendet der Stil einen Standard-Fallback-Stil.

[explicit] QStyleKitStyle::QStyleKitStyle(const QString &filePath)

Erstellt ein `QStyleKitStyle`-Objekt und lädt die QML- Style -Datei unter filePath.

filePath ist ein Pfad zu einer lokalen Datei oder ein Pfad zu einer Datei im Ressourcen-Dateisystem; ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Anwendung aufgelöst. Ist der Pfad ungültig oder ist das Wurzelobjekt der geladenen Komponente kein „ Style “, wird eine Warnung ausgegeben und der erstellte Stil verwendet einen Standard-Fallback-Stil, bis ein gültiges „ stylePath “ festgelegt wird.

[override virtual noexcept] QStyleKitStyle::~QStyleKitStyle()

Zerstört die „ QStyleKitStyle “.

QStringList QStyleKitStyle::availableThemeNames() const

Gibt die Namen aller Themen zurück, die von dem geladenen „ Style “ bereitgestellt werden, einschließlich der integrierten Themen „ Light “ und „ Dark “ sowie aller benutzerdefinierten Themen, die durch den Stil definiert sind. Gibt eine leere Liste zurück, wenn kein Stil geladen ist.

Hinweis: Getter -Funktion für die Eigenschaft `availableThemeNames`.

Siehe auch ` customThemeNames()` und ` themeName()`.

QStringList QStyleKitStyle::customThemeNames() const

Gibt die Namen der benutzerdefinierten Designs zurück, die durch die geladene Datei „ Style “ definiert sind, wobei die integrierten Designs „ Light “ und „ Dark “ ausgeschlossen sind. Gibt eine leere Liste zurück, wenn kein Stil geladen wurde.

Hinweis: Getter -Funktion für die Eigenschaft `customThemeNames`.

Siehe auch availableThemeNames().

[override virtual] void QStyleKitStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w = nullptr) const

Implementiert neu: ` QCommonStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const`.

[override virtual] void QStyleKitStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const

Implementiert: ` QCommonStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget) const`.

[override virtual] void QStyleKitStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const

Implementiert: ` QCommonStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget) const`.

[override virtual protected] bool QStyleKitStyle::event(QEvent *event)

Implementiert: ` QObject::event(QEvent *e)`.

[override virtual protected] bool QStyleKitStyle::eventFilter(QObject *obj, QEvent *event)

Implementiert neu: ` QObject::eventFilter` (`QObject *watched, QEvent *event`).

[override virtual] QStyle::SubControl QStyleKitStyle::hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *w = nullptr) const

Implementiert neu: ` QCommonStyle::hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const`.

[override virtual] int QStyleKitStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const

Implementiert: ` QCommonStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget) const`.

[override virtual] void QStyleKitStyle::polish(QApplication *app)

Implementiert: ` QCommonStyle::polish(QApplication *app)`.

[override virtual] void QStyleKitStyle::polish(QPalette &palette)

Implementiert neu: QCommonStyle::polish(QPalette &pal).

[override virtual] void QStyleKitStyle::polish(QWidget *widget)

Implementiert: ` QCommonStyle::polish(QWidget *widget)`.

void QStyleKitStyle::setStylePath(const QString &filePath)

Lädt die QML- Style unter filePath und wendet sie auf alle Widgets an.

filePath ist ein Pfad zu einer lokalen Datei oder ein Pfad zu einer Datei im Ressourcen-Dateisystem; siehe die Eigenschaft „ stylePath “ für die zulässigen Formate. Wenn er mit dem aktuellen „ stylePath “ übereinstimmt, führt diese Funktion keine Aktion aus. Wenn der neue Stil nicht geladen werden kann, bleibt der zuvor geladene Stil aktiv und es wird eine Warnung ausgegeben; „ stylePathChanged()“ wird dennoch aufgerufen, um den geänderten Eigenschaftswert widerzuspiegeln.

Hinweis: Setter -Funktion für die Eigenschaft „ stylePath “.

Siehe auch ` stylePath()`.

void QStyleKitStyle::setThemeName(const QString &themeName)

Aktiviert das Design mit dem Namen „ themeName “.

themeName Muss einer der Einträge in ` availableThemeNames()` sein oder der Sonderbezeichnung ` System `, um das Farbschema der Plattform zu übernehmen. Wenn kein ` Style ` geladen wurde, gibt diese Funktion eine Warnung aus und kehrt zurück, ohne das aktive Design zu ändern.

Hinweis: Setter -Funktion für die Eigenschaft „ themeName “.

Siehe auch „ themeName()“ und „ availableThemeNames()“.

[override virtual] QSize QStyleKitStyle::sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = nullptr) const

Implementiert: ` QCommonStyle::sizeFromContents(QStyle::ContentsType contentsType, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget) const`.

[override virtual] QPalette QStyleKitStyle::standardPalette() const

Implementiert neu: QStyle::standardPalette() const.

[override virtual] int QStyleKitStyle::styleHint(QStyle::StyleHint sh, const QStyleOption *opt = nullptr, const QWidget *w = nullptr, QStyleHintReturn *shret = nullptr) const

Implementiert: ` QCommonStyle::styleHint(QStyle::StyleHint sh, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *hret) const`.

QString QStyleKitStyle::stylePath() const

Gibt den Pfad der aktuell geladenen „ Style “-Datei zurück.

Hinweis: Getter -Funktion für die Eigenschaft „stylePath“.

Siehe auch ` setStylePath()`.

[override virtual] QRect QStyleKitStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *w = nullptr) const

Implementiert: ` QCommonStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const`.

[override virtual] QRect QStyleKitStyle::subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = nullptr) const

Implementiert: ` QCommonStyle::subElementRect(QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget) const`.

QString QStyleKitStyle::themeName() const

Gibt den Namen des derzeit aktiven Themes zurück oder eine leere Zeichenkette, wenn kein „ Style “ geladen wurde.

Hinweis: Getter -Funktion für die Eigenschaft „themeName“.

Siehe auch „ setThemeName()“ und „ availableThemeNames()“.

[override virtual] void QStyleKitStyle::unpolish(QApplication *app)

Implementiert: ` QCommonStyle::unpolish(QApplication *application)`.

[override virtual] void QStyleKitStyle::unpolish(QWidget *widget)

Implementiert: ` QCommonStyle::unpolish(QWidget *widget)`.

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