Stile und stilbewusste Widgets
Stile (Klassen, die von ` QStyle` erben) übernehmen das Zeichnen für Widgets und kapseln das Erscheinungsbild einer grafischen Benutzeroberfläche. ` QStyle ` ist eine abstrakte Basisklasse. Die in Qt integrierten Widgets nutzen sie für fast alle ihre Zeichnungsvorgänge, sodass sie genau wie die entsprechenden nativen Widgets aussehen.
Qt enthält eine Auswahl an integrierten Stilen. Die Stile „ windows “ und „ fusion “ sind Teil des Moduls „ Qt Widgets “. Die Plattformstile, wie beispielsweise „ windows11 “ unter Windows und „ macos “ unter macOS, sind Plugins, die nur auf der jeweiligen Plattform verfügbar sind. „ QStyleFactory “ listet die zur Laufzeit verfügbaren Stile auf und erstellt sie anhand ihres Namens. „ QApplication::setStyle()“ legt einen Stil als Anwendungsstil fest, und Benutzer können einen Stil mit der Befehlszeilenoption „ -style “ auswählen.
Eine „ QStyle “-Implementierung ist die Methode, um einer Produktionsanwendung ein individuelles Erscheinungsbild zu verleihen. StyleKit stellt eine solche Implementierung bereit ( QStyleKitStyle), die eine QML-Beschreibung des Designs ausliest. Informationen dazu, wann ein Stil, StyleKit oder ein Stylesheet verwendet werden sollte, finden Sie unter „Styling Approaches“ unter Qt Widgets.
Anpassen eines Stils
Um ausgewählte Aspekte eines bestehenden Stils zu ändern, erben Sie von „ QProxyStyle “ und implementieren Sie die virtuellen Funktionen neu, die die Elemente zeichnen oder vermessen, die Sie ändern möchten. Ein Proxy-Stil umschließt einen anderen Stil und leitet alles, was Sie nicht neu implementieren, an diesen weiter.
Sie können den Basisstil explizit benennen oder ihn unbestimmt lassen. Ein expliziter Basisstil gibt Ihnen volle Kontrolle und eignet sich für Anpassungen, die vom Verhalten eines bestimmten Stils abhängen. Ohne Basisstil umschließt der Proxy-Stil den Anwendungsstil, sodass Ihre Anpassung zusätzlich zu dem gilt, was die Plattform bereitstellt.
The QStyle class documentation zeigt einen Proxy-Stil, der die Pfeile eines Drehfelds ersetzt.
Implementierung eines Stils
QCommonStyle bietet eine praktische Grundlage für vollständige Stilimplementierungen. Er implementiert das Verhalten, das alle Qt-Stile gemeinsam haben, wie beispielsweise das Layout der Unterelemente und die Größenberechnungen, und überlässt das Zeichnen Ihnen. Erben Sie von ` QCommonStyle ` und implementieren Sie die Zeichenfunktionen neu, zusammen mit den Pixelmaßen, den Rechtecken der Unterelemente und den Stilhinweisen, die von den üblichen Standardwerten abweichen. Die integrierten Stile von Qt XML sind nicht Teil der öffentlichen API und können nicht als Basisklassen dienen; umschließen Sie sie stattdessen mit ` QProxyStyle `.
Die Implementierung eines vollständigen Stils ist eine komplexe Aufgabe. Auf den folgenden Seiten wird beschrieben, wie die Stil-API funktioniert, es wird nachverfolgt, wie ein Widget vom „paint“-Ereignis bis zum Stil gezeichnet wird, und es werden die Elemente, Zustände und Optionen aufgelistet, die jedes Widget verwendet:
- „Wie ein Stil ein Widget zeichnet“ erläutert Stilelemente, Unterelemente, Pixelmetriken, Stilhinweise, Stiloptionen, die Funktionen „ QStyle “ sowie die Palette.
- „Style-Aware-Widgets erstellen“ zeigt, wie ein benutzerdefiniertes Widget unter Verwendung des aktuellen Stils gezeichnet wird, sodass es in jedem Stil korrekt dargestellt wird.
- „Gestaltung eines Kontrollkästchens: Ein Schritt-für-Schritt-Leitfaden“ verfolgt ein „ QCheckBox “ von seinem „paint“-Ereignis über „ QCommonStyle “ bis hin zu einem benutzerdefinierten Indikator.
- Die „Widget-Stilreferenz“ listet für jedes Widget die von ihm gezeichneten Stilelemente, die von ihm gesetzten Statusflags und die Elemente seiner Stiloption auf.
Die Elemente, die die Widgets zeichnen, sind in jedem Stil identisch, sodass Sie die Referenz auch verwenden können, wenn Sie ein stilbewusstes Widget oder einen Delegaten schreiben.
Klassen für die Widget-Gestaltung
Verwenden Sie diese Klassen, um das Erscheinungsbild einer Anwendung anzupassen.
Farben basierend auf RGB-, HSV- oder CMYK-Werten | |
Farbraumabstraktion | |
Umwandlung zwischen Farbräumen | |
Kapseln das einheitliche Erscheinungsbild einer grafischen Benutzeroberfläche | |
Mauszeiger mit beliebiger Form | |
Legt eine Abfrage für eine Schriftart fest, die zum Zeichnen von Text verwendet wird | |
Informationen zu den im zugrunde liegenden Fenstersystem verfügbaren Schriftarten | |
Allgemeine Informationen zu Schriftarten | |
Stellt eine Verankerung zwischen zwei Elementen in einem `QGraphicsAnchorLayout` dar | |
Layout, in dem Widgets in der Graphics-Ansicht miteinander verankert werden können | |
Enthält Farbgruppen für jeden Widget-Zustand | |
Abstrakte Basisklasse, die das Erscheinungsbild einer GUI kapselt | |
Erstellt QStyle-Objekte | |
Stilhinweise, die mehr als nur grundlegende Datentypen zurückgeben | |
Stilhinweise, die eine `QRegion` zurückgeben | |
Stilhinweise, die ein `QVariant` zurückgeben | |
Wendet einen Qt Labs StyleKit-Stil an auf Qt Widgets | |
Speichert die von QStyle-Funktionen verwendeten Parameter | |
Hilfsklasse zum Zeichnen von QStyle-Elementen innerhalb eines Widgets |
Siehe auch „ QStyle“ , „ QProxyStyle “, „ QCommonStyle “, „ QStylePainter “, „ QStyleOption “ und „Styling-Ansätze für Qt Widgets “.
© 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.