Sur cette page

Feuilles de style Qt

Les feuilles de style Qt vous permettent de personnaliser l'apparence des widgets à l'aide de règles textuelles, en complément des possibilités offertes par la sous-classification de ` QStyle`. Les concepts, la terminologie et la syntaxe des feuilles de style Qt s'inspirent largement des feuilles de style en cascade HTML (CSS), mais sont adaptés à l'univers des widgets.

Les feuilles de style constituent un outil destiné au prototypage et aux petits ajustements locaux ; pour l'aspect final d'une application, implémentez une classe ` QStyle ` ou utilisez StyleKit. L'article « Approches de mise en forme pour Qt Widgets » explique les inconvénients des feuilles de style et compare les différentes approches.

Thèmes :

Remarque : si des feuilles de style Qt sont utilisées sur un même widget en même temps que des fonctions définissant l'apparence des widgets, telles que ` QWidget::setFont()` ou ` QTreeWidgetItem::setBackground()`, les feuilles de style prévaudront en cas de conflit entre les paramètres.

Présentation générale

Les feuilles de style sont des spécifications textuelles qui peuvent être définies pour l'ensemble de l'application à l'aide de ` QApplication::setStyleSheet()` ou pour un widget spécifique (et ses enfants) à l'aide de ` QWidget::setStyleSheet()`. Si plusieurs feuilles de style sont définies à différents niveaux, Qt détermine la feuille de style effective à partir de toutes celles qui sont définies. C'est ce qu'on appelle la « cascade ».

Définissez la feuille de style de l'application une seule fois, avant l'affichage de la première fenêtre. La modification de la feuille de style lors de l'exécution peut entraîner des résultats incohérents, certaines parties de la feuille de style précédente n'étant pas remplacées par la nouvelle feuille de style. N'utilisez pas cette fonction pour changer de thème lors de l'exécution.

Par exemple, la feuille de style suivante spécifie que tous les éléments ` QLineEdit` doivent utiliser le jaune comme couleur d'arrière-plan, et que tous les éléments ` QCheckBox` doivent utiliser le rouge comme couleur de texte :

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

Pour ce type de personnalisation, les feuilles de style sont bien plus puissantes que ` QPalette`. Par exemple, il pourrait être tentant de définir le rôle ` QPalette::Button ` sur rouge pour un ` QPushButton ` afin d’obtenir un bouton rouge. Cependant, cela ne fonctionnait pas forcément avec tous les styles, car les auteurs de styles sont limités par les directives des différentes plateformes et (sous Windows et macOS) par le moteur de thème natif.

Les feuilles de style vous permettent d’effectuer toutes sortes de personnalisations difficiles, voire impossibles à réaliser en utilisant uniquement l’ QPalette. Si vous souhaitez des arrière-plans jaunes pour les champs obligatoires, du texte rouge pour les boutons potentiellement destructeurs ou des cases à cocher sophistiquées, les feuilles de style sont la solution.

Les feuilles de style s’appliquent par-dessus l’ widget style actuel, ce qui signifie que vos applications auront un aspect aussi natif que possible, tout en tenant compte des contraintes imposées par les feuilles de style. Contrairement aux modifications de palette, les feuilles de style offrent des garanties : si vous définissez la couleur d’arrière-plan d’un QPushButton sur rouge, vous pouvez être assuré que le bouton aura un arrière-plan rouge dans tous les styles, sur toutes les plateformes. De plus, Qt Widgets Designer intègre la prise en charge des feuilles de style, ce qui permet de visualiser facilement les effets d’une feuille de style dans différents widget styles.

Les feuilles de style permettent également de donner à un prototype un aspect distinctif sans avoir à créer de sous-classes d’ QStyle, par exemple en spécifiant des images pour les boutons radio et les cases à cocher.

Lorsqu’une feuille de style est active, l’ QStyle renvoyée par QWidget::style() est un style « feuille de style » d’encapsulation, et non le style spécifique à la plate-forme. Le style d'enveloppe garantit le respect de toute feuille de style active et, dans le cas contraire, transmet les opérations de dessin au style sous-jacent spécifique à la plate-forme (par exemple, le style windows11 sous Windows, ou le style macos sous macOS ; voir QStyleFactory).

Considérations de sécurité

Le texte de la feuille de style est analysé par Qt et peut faire référence à des ressources externes : la fonction ` url() ` peut pointer vers n’importe quel fichier local ou ressource Qt, que Qt chargera et affichera ensuite, par exemple sous forme d’arrière-plan, de bordure ou d’icône. Les applications qui construisent une feuille de style, en tout ou en partie, à partir de données qui ne sont pas entièrement sous leur contrôle – telles qu’un fichier de thème sélectionnable à l’exécution, un chemin fourni via l’option de ligne de commande ` -stylesheet `, ou du contenu provenant d’un plugin – doivent traiter ce contenu comme elles le feraient pour tout autre chemin de fichier provenant d’une source non fiable. Une feuille de style malveillante peut amener Qt à lire et à afficher le contenu de fichiers locaux arbitraires auxquels le processus de l'application est autorisé à accéder.

Les feuilles de style codées en dur dans l’application ou intégrées dans un fichier de ressources Qt compilé ne sont pas concernées par cette mise en garde, car leur contenu est entièrement contrôlé par l’application elle-même.

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