Style matériel
Le style Material est basé sur les lignes directrices de Google en matière de conception matérielle. Plus...
| Déclaration d'importation : | import QtQuick.Controls.Material |
| Depuis : | Qt 5.7 |
Propriétés attachées
- accent: couleur
- background: couleur
- elevation: int
- premier plan: couleur
- primary: couleur
- theme: énumération
- roundedScale: énumération
- containerStyle: énumération
Méthodes attachées
- color color(enumeration predefined, enumeration shade)
Description détaillée
Le style Material est basé sur les directives de conception Material de Google. Il permet une expérience unifiée sur toutes les plateformes et toutes les tailles d'appareils.
Le thème clair du style Material. |
Le thème sombre du style Material. |
Pour exécuter une application avec le style Material, voir Utilisation des styles dans les contrôles Qt Quick .
Remarque : le style Material n'est pas un style natif d'Android. Le style Material est une implémentation 100% multiplateforme du style de Qt Quick Controls qui suit les directives de conception Material de Google. Le style fonctionne sur n'importe quelle plateforme et est plus ou moins identique partout. Des différences mineures peuvent apparaître en raison des différences entre les polices système disponibles et les moteurs de rendu des polices.
Remarque : les directives Material Design évoluant au fil du temps, ce style peut modifier certaines valeurs de remplissage ou de police, par exemple, afin de maintenir la cohérence avec les directives.
Personnalisation
Le style Material prend en charge plusieurs attributs personnalisables. Certains de ces attributs propagate s'appliquent aux enfants de la même manière que fonts:

Les autres attributs ne se propagent pas aux enfants :
Dans l'exemple suivant, la fenêtre et les trois boutons radio apparaissent dans le thème sombre avec une couleur d'accentuation violette :
import QtQuick import QtQuick.Controls import QtQuick.Controls.Material ApplicationWindow { visible: true Material.theme: Material.Dark Material.accent: Material.Purple Column { anchors.centerIn: parent RadioButton { text: qsTr("Small") } RadioButton { text: qsTr("Medium") checked: true } RadioButton { text: qsTr("Large") } } } |
|
Outre la spécification des attributs en QML, il est également possible de spécifier certains d'entre eux via des variables d'environnement ou dans un fichier de configuration. Les attributs spécifiés en QML ont la priorité sur toutes les autres méthodes.
Fichier de configuration
| Variable | Description de la variable |
|---|---|
Theme | Spécifie le thème par défaut des matériaux. La valeur peut être l'un des thèmes disponibles, par exemple "Dark". |
Variant | Spécifie la variante Material. La conception matérielle comporte deux variantes : une variante normale conçue pour les appareils tactiles et une variante dense pour les ordinateurs de bureau. La variante dense utilise des contrôles et des polices de caractères de plus petite taille. La valeur peut être |
Accent | Spécifie la couleur d'accentuation par défaut du matériau. La valeur peut être n'importe quelle color, mais il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies, par exemple "Teal". |
Primary | Spécifie la couleur primaire par défaut du matériau. La valeur peut être quelconque color, mais il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies, par exemple "BlueGrey". |
Foreground | Spécifie la couleur d'avant-plan par défaut du matériau. La valeur peut être n'importe quelle color, ou l'une des couleurs Material prédéfinies, par exemple "Brown". |
Background | Spécifie la couleur d'arrière-plan par défaut du matériau. La valeur peut être n'importe quelle color, ou l'une des couleurs matérielles prédéfinies, par exemple "Grey". |
Voir Qt Quick Fichier de configuration des contrôles pour plus de détails sur le fichier de configuration.
Variables d'environnement
| Variable | Description de la variable |
|---|---|
QT_QUICK_CONTROLS_MATERIAL_THEME | Spécifie le thème par défaut de Material. La valeur peut être l'un des thèmes disponibles, par exemple "Dark". |
QT_QUICK_CONTROLS_MATERIAL_VARIANT | Spécifie la variante Material. La conception matérielle comporte deux variantes : une variante normale conçue pour les appareils tactiles et une variante dense pour les ordinateurs de bureau. La variante dense utilise des contrôles et des polices de caractères de plus petite taille. La valeur peut être |
QT_QUICK_CONTROLS_MATERIAL_ACCENT | Spécifie la couleur d'accentuation par défaut du matériau. La valeur peut être n'importe quelle color, mais il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies, par exemple "Teal". |
QT_QUICK_CONTROLS_MATERIAL_PRIMARY | Spécifie la couleur primaire par défaut du matériau. La valeur peut être quelconque color, mais il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies, par exemple "BlueGrey". |
QT_QUICK_CONTROLS_MATERIAL_FOREGROUND | Spécifie la couleur d'avant-plan par défaut du matériau. La valeur peut être n'importe quelle color, ou l'une des couleurs Material prédéfinies, par exemple "Brown". |
QT_QUICK_CONTROLS_MATERIAL_BACKGROUND | Spécifie la couleur d'arrière-plan par défaut du matériau. La valeur peut être n'importe quelle color, ou l'une des couleurs matérielles prédéfinies, par exemple "Grey". |
Voir Variables d'environnement prises en charge dans Qt Quick Controls pour la liste complète des variables d'environnement prises en charge.
Dépendance
Le style Matériel doit être importé séparément pour avoir accès aux attributs spécifiques au style Matériel. Il convient de noter qu'indépendamment des références au style Material, le même code d'application s'exécute avec n'importe quel autre style. Les attributs spécifiques au style Material n'ont d'effet que lorsque l'application est exécutée avec le style Material.
Si le style Material est importé dans un fichier QML qui est toujours chargé, le style Material doit être déployé avec l'application afin de pouvoir exécuter l'application quel que soit le style avec lequel elle est exécutée. L'utilisation de sélecteurs de fichiers permet d'apporter des modifications spécifiques à un style sans créer de dépendance absolue à l'égard d'un style.
Couleurs matérielles prédéfinies
Même si les couleurs primaires et les couleurs d'accentuation peuvent être n'importe lesquelles color, il est recommandé d'utiliser l'une des couleurs prédéfinies qui ont été conçues pour s'harmoniser avec le reste de la palette de styles Material :
Couleurs prédéfinies disponibles :
| Constante | Description |
|---|---|
Material.Red | #F44336 |
Material.Pink | #E91E63 (accent par défaut) |
Material.Purple | #9C27B0 |
Material.DeepPurple | #673AB7 |
Material.Indigo | #3F51B5 (primaire par défaut) |
Material.Blue | #2196F3 |
Material.LightBlue | #03A9F4 |
Material.Cyan | #00BCD4 |
Material.Teal | #009688 |
Material.Green | #4CAF50 |
Material.LightGreen | #8BC34A |
Material.Lime | #CDDC39 |
Material.Yellow | #FFEB3B |
Material.Amber | #FFC107 |
Material.Orange | #FF9800 |
Material.DeepOrange | #FF5722 |
Material.Brown | #795548 |
Material.Grey | #9E9E9E |
Material.BlueGrey | #607D8B |
Lorsque le thème sombre est utilisé, différentes nuances des couleurs prédéfinies sont utilisées par défaut :
| Constante | Description |
|---|---|
Material.Red | #EF9A9A |
Material.Pink | #F48FB1 (accent par défaut) |
Material.Purple | #CE93D8 |
Material.DeepPurple | #B39DDB |
Material.Indigo | #9FA8DA (primaire par défaut) |
Material.Blue | #90CAF9 |
Material.LightBlue | #81D4FA |
Material.Cyan | #80DEEA |
Material.Teal | #80CBC4 |
Material.Green | #A5D6A7 |
Material.LightGreen | #C5E1A5 |
Material.Lime | #E6EE9C |
Material.Yellow | #FFF59D |
Material.Amber | #FFE082 |
Material.Orange | #FFCC80 |
Material.DeepOrange | #FFAB91 |
Material.Brown | #BCAAA4 |
Material.Grey | #EEEEEE |
Material.BlueGrey | #B0BEC5 |
Teintes prédéfinies
Il existe plusieurs nuances différentes de chaque couleur prédéfinie qui peuvent être transmises à la fonction Material.color() :
| Constante | Valeur |
|---|---|
Material.Shade50 | |
Material.Shade100 | |
Material.Shade200 | |
Material.Shade300 | |
Material.Shade400 | |
Material.Shade500 | |
Material.Shade600 | |
Material.Shade700 | |
Material.Shade800 | |
Material.Shade900 | |
Material.ShadeA100 | |
Material.ShadeA200 | |
Material.ShadeA400 | |
Material.ShadeA700 |
Voir aussi Style de base, Style universel
Variantes
Le style "Matériel" prend également en charge une variante dense, dans laquelle les contrôles tels que les boutons et les délégués sont plus petits en hauteur et utilisent des tailles de police plus petites. Il est recommandé d'utiliser la variante dense sur les plateformes de bureau, où la souris et le clavier permettent une interaction plus précise et plus souple avec l'utilisateur.
Pour utiliser la variante dense, définissez la variable d'environnement QT_QUICK_CONTROLS_MATERIAL_VARIANT à Dense, ou spécifiez Variant=Dense dans le fichier qtquickcontrols2.conf. Dans les deux cas, la valeur par défaut est Normal.
Les images suivantes illustrent les différences entre certains contrôles lors de l'utilisation des variantes normale et dense :
|
|
Notez que les hauteurs indiquées ci-dessus peuvent varier en fonction des différences de polices de caractères entre les plates-formes.
Notes spécifiques aux contrôles
Zone de texte
TextArea prend en charge deux styles de conteneur: Filled et Outlined. Les TextAreas soulignées ont un texte de remplacement flottant qui se trouve en haut du contrôle. Le texte de l'espace réservé doit donc sortir des limites du contrôle, ce qui peut entraîner un écrêtage lorsque TextArea ou le Flickable dont il est l'enfant définit clip sur true. Pour éviter cela, topInset est défini sur une valeur appropriée dans ces cas.
Conformément aux lignes directrices sur les matériaux, le texte des espaces réservés doit être court et ne pas occuper plusieurs lignes.
Champ de texte
Le même problème d'écrêtage expliqué ci-dessus pour TextArea peut également se produire avec TextField. Pour éviter ce problème, topInset est réglé sur une valeur appropriée lorsque TextField règle l'écrêtage sur true.
Conformément aux directives sur les matériaux, le texte de remplacement doit être court et ne pas occuper plusieurs lignes.
Documentation jointe sur les propriétés
Material.accent: color |
Cette propriété jointe contient la couleur d'accentuation du thème. La propriété peut être attachée à n'importe quelle fenêtre ou élément. La valeur est propagée aux enfants.
La valeur par défaut est Material.Pink.
Dans l'exemple suivant, la couleur d'accentuation du bouton en surbrillance est modifiée en Material.Orange:
Button { text: qsTr("Button") highlighted: true Material.accent: Material.Orange } |
|
Remarque : même si la couleur d'accentuation peut être n'importe quelle color, il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies qui ont été conçues pour s'harmoniser avec le reste de la palette de styles matérielle.
Material.background: color |
Cette propriété jointe contient la couleur d'arrière-plan du thème. La propriété peut être attachée à n'importe quelle fenêtre ou élément. La valeur est propagée aux enfants.
La valeur par défaut est spécifique au thème (light ou dark).
Dans l'exemple suivant, la couleur d'arrière-plan du bouton est modifiée en Material.Teal:
Button { text: qsTr("Button") highlighted: true Material.background: Material.Teal } |
|
Matériau.élévation: int |
Cette propriété jointe indique l'élévation du contrôle. Plus l'élévation est importante, plus l'ombre est profonde. La propriété peut être attachée à n'importe quel contrôle, mais tous les contrôles ne visualisent pas l'élévation. La valeur n'est pas transmise aux enfants.
La valeur par défaut est spécifique au contrôle.
Dans l'exemple suivant, l'élévation du volet est fixée à 6 afin d'obtenir l'aspect d'une carte surélevée:
|
Material.foreground: color |
Cette propriété jointe contient la couleur d'avant-plan du thème. La propriété peut être attachée à n'importe quelle fenêtre ou élément. La valeur est propagée aux enfants.
La valeur par défaut est spécifique au thème (light ou dark).
Dans l'exemple suivant, la couleur d'avant-plan du bouton est fixée à Material.Pink:
Button { text: qsTr("Button") Material.foreground: Material.Pink } |
|
Material.primary: color |
Cette propriété jointe contient la couleur primaire du thème. La propriété peut être attachée à n'importe quelle fenêtre ou élément. La valeur est propagée aux enfants.
La couleur primaire est utilisée par défaut comme couleur d'arrière-plan de ToolBar.
La valeur par défaut est Material.Indigo.
Remarque : même si la couleur primaire peut être n'importe quelle color, il est recommandé d'utiliser l'une des couleurs matérielles prédéfinies qui ont été conçues pour s'harmoniser avec le reste de la palette de styles matérielle.
Material.theme: énumération |
Cette propriété jointe indique si le thème est clair ou foncé. La propriété peut être attachée à n'importe quelle fenêtre ou élément. La valeur est propagée aux enfants.
Thèmes disponibles :
| Constant | Description du thème |
|---|---|
Material.Light | Thème clair (par défaut) |
Material.Dark | Thème sombre |
Material.System | Thème système |
En attribuant la valeur System au thème, on choisit le thème clair ou foncé en fonction des couleurs du thème du système. Cependant, lors de la lecture de la valeur de la propriété theme, la valeur n'est jamais System, mais le thème réel.
Dans l'exemple suivant, le thème du volet et du bouton est défini sur Material.Dark:
Material.roundedScale: énumération |
Cette propriété jointe contient le rayon des coins arrondis utilisés sur le contrôle cible. Cette propriété peut être attachée à n'importe quelle fenêtre ou élément, mais seuls certains contrôles la prennent en charge. La valeur n'est pas transmise aux enfants.
La valeur par défaut est spécifique au contrôle.
Échelles disponibles :
| Constantes | Description |
|---|---|
Material.NotRounded | Coins carrés |
Material.ExtraSmallScale | Coins arrondis très petits |
Material.SmallScale | Petits coins arrondis |
Material.MediumScale | Coins arrondis moyens |
Material.LargeScale | Grands coins arrondis |
Material.ExtraLargeScale | Très grands coins arrondis |
Material.FullScale | Coins entièrement arrondis |
Cette propriété a été ajoutée dans Qt 6.5.
Voir aussi : Style de matériau : Forme.
Material.containerStyle: énumération |
Cette propriété jointe contient le style du conteneur utilisé par le contrôle cible. Cette propriété peut être attachée à n'importe quelle fenêtre ou élément, mais seuls TextField et TextArea la prennent en charge par défaut. La valeur n'est pas propagée aux enfants.
La valeur par défaut est spécifique au contrôle.
Styles disponibles :
| Constante | Description |
|---|---|
Material.Filled | Utiliser la variante de conteneur rempli si disponible |
Material.Outlined | Utiliser la variante de conteneur à contour si elle est disponible |
Cette propriété a été ajoutée dans Qt 6.5.
Voir aussi : Style de matériau : Conteneurs de champs de texte.
Documentation sur la méthode attachée
color color(enumeration predefined, enumeration shade) |
Cette méthode annexe renvoie la valeur effective de la couleur matérielle prédéfinie spécifiée, combinée à la nuance donnée. S'il est omis, l'argument de la nuance prend par défaut la valeur Material.Shade500.
Rectangle { color: Material.color(Material.Red) }
Informations connexes
© 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.









