Qt-Style-Sheets

Qt Style Sheets sind ein leistungsfähiger Mechanismus, mit dem Sie das Erscheinungsbild von Widgets anpassen können, zusätzlich zu dem, was bereits durch die Unterklassen von QStyle möglich ist. Die Konzepte, die Terminologie und die Syntax von Qt Style Sheets sind stark von HTML Cascading Style Sheets (CSS) inspiriert, aber an die Welt der Widgets angepasst.

Themen:

Hinweis: Wenn Qt Style Sheets für dasselbe Widget verwendet werden wie Funktionen, die das Aussehen von Widgets festlegen, z. B. QWidget::setFont() oder QTreeWidgetItem::setBackground(), haben Style Sheets Vorrang, wenn die Einstellungen in Konflikt stehen.

Überblick

Stilvorlagen sind textuelle Spezifikationen, die für die gesamte Anwendung mit QApplication::setStyleSheet() oder für ein bestimmtes Widget (und seine Kinder) mit QWidget::setStyleSheet() festgelegt werden können. Wenn mehrere Stylesheets auf verschiedenen Ebenen gesetzt sind, leitet Qt das effektive Stylesheet von allen gesetzten ab. Dies wird als Kaskadierung bezeichnet.

Zum Beispiel legt die folgende Stilvorlage fest, dass alle QLineEdits Gelb als Hintergrundfarbe und alle QCheckBoxes Rot als Textfarbe verwenden sollen:

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

Für diese Art der Anpassung sind Stylesheets viel leistungsfähiger als QPalette. So könnte es beispielsweise verlockend sein, die Rolle QPalette::Button für eine QPushButton auf rot zu setzen, um eine rote Drucktaste zu erhalten. Es ist jedoch nicht gewährleistet, dass dies für alle Stile funktioniert, da die Autoren von Stilen durch die Richtlinien der verschiedenen Plattformen und (unter Windows und macOS) durch die native Theme-Engine eingeschränkt sind.

Mit Stilvorlagen können Sie 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 zerstörerische Drucktasten oder ausgefallene Kontrollkästchen wünschen, sind Stilvorlagen die Lösung.

Style Sheets werden auf die aktuelle widget style angewendet, was bedeutet, dass Ihre Anwendungen so nativ wie möglich aussehen, aber alle Style Sheet-Einschränkungen berücksichtigt werden. Im Gegensatz zur Palettenfummelei bieten Style Sheets Garantien: Wenn Sie die Hintergrundfarbe einer QPushButton auf rot setzen, können Sie sicher sein, dass die Schaltfläche in allen Stilen und auf allen Plattformen einen roten Hintergrund hat. Darüber hinaus bietet Qt Widgets Designer eine Stylesheet-Integration, die es einfach macht, die Auswirkungen eines Stylesheets in verschiedenen widget styles zu sehen.

Darüber hinaus können Stylesheets verwendet werden, um Ihrer Anwendung ein unverwechselbares Aussehen zu verleihen, ohne dass Sie eine Subklasse QStyle erstellen müssen. So können Sie beispielsweise beliebige Bilder für Optionsfelder und Kontrollkästchen festlegen, um sie hervorzuheben. Mit dieser Technik können Sie auch kleinere Anpassungen vornehmen, die normalerweise die Unterklassifizierung mehrerer Style-Klassen erfordern würden, wie z. B. die Angabe einer style hint.

Wenn eine Stilvorlage aktiv ist, ist der QStyle, der von QWidget::style() zurückgegeben wird, ein Wrapper-"Stil" und nicht der plattformspezifische Stil. Der Wrapper-Stil stellt sicher, dass jede aktive Stilvorlage respektiert wird und leitet ansonsten die Zeichenoperationen an den zugrunde liegenden, plattformspezifischen Stil weiter (z. B. QWindowsVistaStyle unter Windows).

Seit Qt 4.5 unterstützen Qt-Stylesheets vollständig macOS.

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