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
- availableThemeNames : QStringList
- customThemeNames : QStringList
- stylePath : QString
- themeName : QString
Ö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:
| Unterelement | StyleKit-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 QTabBar | tabButton |
| QMenu Elemente | menuItem |
| Trennzeichen in einer QMenu | menuSeparator |
| QMenuBar Elemente | menuBarItem |
| Trennzeichen in einer QToolBar | toolSeparator |
| 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.