Auf dieser Seite

Qt-Stylesheets

Mit Qt-Stylesheets können Sie das Erscheinungsbild von Widgets mithilfe textueller Regeln anpassen – zusätzlich zu den Möglichkeiten, die sich durch die Unterklassifizierung von ` QStyle` ergeben. Die Konzepte, die Terminologie und die Syntax von Qt-Stylesheets sind stark von HTML-Cascading Style Sheets (CSS) inspiriert, wurden jedoch an die Welt der Widgets angepasst.

Stylesheets sind ein Werkzeug für das Prototyping und für kleine, lokale Anpassungen; für das endgültige Erscheinungsbild einer Anwendung sollten Sie eine ` QStyle ` implementieren oder StyleKit verwenden. Der Artikel „Styling-Ansätze für Qt Widgets “ erläutert die Nachteile von Stylesheets und vergleicht die verschiedenen Ansätze.

Themen:

Hinweis: Wenn Qt-Stylesheets im selben Widget verwendet werden wie Funktionen, die das Erscheinungsbild von Widgets festlegen, z. B. ` QWidget::setFont()` oder ` QTreeWidgetItem::setBackground()`, haben die Stylesheets Vorrang, falls die Einstellungen miteinander in Konflikt stehen.

Übersicht

Stylesheets sind textuelle Spezifikationen, die mit ` QApplication::setStyleSheet()` für die gesamte Anwendung oder mit ` QWidget::setStyleSheet()` für ein bestimmtes Widget (und dessen untergeordnete Elemente) festgelegt werden können. Wenn mehrere Stylesheets auf verschiedenen Ebenen festgelegt sind, leitet Qt das gültige Stylesheet aus allen festgelegten Stylesheets ab. Dies wird als Kaskadierung bezeichnet.

Legen Sie das Anwendungs-Stylesheet einmalig fest, bevor das erste Fenster angezeigt wird. Das Ändern des Stylesheets zur Laufzeit kann zu inkonsistenten Ergebnissen führen, bei denen nur bestimmte Teile des vorherigen Stylesheets durch das neue Stylesheet überschrieben werden. Verwenden Sie diese Funktion nicht, um Themen zur Laufzeit zu wechseln.

Das folgende Stylesheet legt beispielsweise fest, dass alle ` QLineEdit`-Elemente Gelb als Hintergrundfarbe und alle ` QCheckBox`-Elemente Rot als Textfarbe verwenden sollen:

QLineEdit { background: yellow }
QCheckBox { color: red }

Für diese Art der Anpassung sind Stylesheets wesentlich leistungsfähiger als ` QPalette`. So könnte es beispielsweise verlockend sein, die Rolle ` QPalette::Button ` für ein ` QPushButton ` auf Rot zu setzen, um eine rote Schaltfläche zu erhalten. Es war jedoch nicht garantiert, dass dies bei allen Stilen funktioniert, da Stilautoren durch die Richtlinien der verschiedenen Plattformen und (unter Windows und macOS) durch die native Theme-Engine eingeschränkt sind.

Mit Stylesheets lassen sich alle Arten von Anpassungen vornehmen, die mit „ QPalette “ allein nur schwer oder gar nicht möglich sind. Wenn Sie gelbe Hintergründe für Pflichtfelder, roten Text für potenziell schädliche Schaltflächen oder ausgefallene Kontrollkästchen wünschen, sind Stylesheets die Lösung.

Stylesheets werden zusätzlich zum aktuellen „ widget style “ angewendet, was bedeutet, dass Ihre Anwendungen so nativ wie möglich aussehen, dabei jedoch alle Einschränkungen der Stylesheets berücksichtigt werden. Im Gegensatz zum Herumprobieren mit Paletten bieten Stylesheets Garantien: Wenn Sie die Hintergrundfarbe eines „ QPushButton “ auf Rot festlegen, können Sie sicher sein, dass die Schaltfläche in allen Stilen und auf allen Plattformen einen roten Hintergrund hat. Darüber hinaus bietet der „ Qt Widgets Designer“ eine Stylesheet-Integration, wodurch sich die Auswirkungen eines Stylesheets in verschiedenen „ widget styles “ leicht anzeigen lassen.

Stylesheets können einem Prototyp auch ohne Unterklassenbildung von „ QStyle “ ein unverwechselbares Aussehen verleihen, beispielsweise durch die Festlegung von Bildern für Optionsfelder und Kontrollkästchen.

Wenn ein Stylesheet aktiv ist, ist der von ` QWidget::style()` zurückgegebene ` QStyle ` ein „Stylesheet“-Wrapper-Stil und nicht der plattformspezifische Stil. Der Wrapper-Stil stellt sicher, dass alle aktiven Stylesheets berücksichtigt werden, und leitet die Zeichenoperationen ansonsten an den zugrunde liegenden, plattformspezifischen Stil weiter (zum Beispiel den Stil „ windows11 “ unter Windows oder den Stil „ macos “ unter macOS; siehe QStyleFactory).

Sicherheitshinweise

Der Text eines Stylesheets wird von Qt geparst und kann auf externe Ressourcen verweisen: Die Funktion ` url() ` kann auf eine beliebige lokale Datei oder Qt-Ressource verweisen, die Qt dann lädt und rendert, beispielsweise als Hintergrund-, Rahmen- oder Symbolbild. Anwendungen, die ein Stylesheet ganz oder teilweise aus Daten erstellen, die nicht vollständig unter ihrer eigenen Kontrolle stehen – wie beispielsweise eine zur Laufzeit auswählbare Theme-Datei, einen über die Befehlszeilenoption ` -stylesheet ` angegebenen Pfad oder Inhalte aus einem Plugin –, sollten diese Inhalte so behandeln wie jeden anderen Dateipfad aus einer nicht vertrauenswürdigen Quelle. Ein bösartiges Stylesheet kann dazu führen, dass Qt den Inhalt beliebiger lokaler Dateien liest und anzeigt, auf die der Anwendungsprozess Zugriffsrechte hat.

Stylesheets, die fest in die Anwendung eingebettet oder in einer kompilierten Qt-Ressourcendatei enthalten sind, sind von dieser Überlegung nicht betroffen, da ihr Inhalt vollständig von der Anwendung selbst kontrolliert wird.

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