Sur cette page

Style Material

Le style Material s'inspire des directives de conception Material Design de Google. En savoir plus...

Déclaration d'importation : import QtQuick.Controls.Material
Depuis : Qt 5.7

Propriétés associées

Méthodes associées

  • color color(énumération prédéfinie, énumération nuance)

Description détaillée

Le style « Material » s'appuie sur les directives de Google Material Design. Il permet d'offrir une expérience homogène sur toutes les plateformes et tous les formats d'appareils.

Galerie des éléments de commande dans le thème clair de style « Material »

Le thème clair du style Material.

Galerie des éléments de commande dans le thème sombre « Material »

Le thème sombre du style Material.

Pour exécuter une application utilisant le style Material, consultez la section « Utilisation des styles » dans le guide « Qt Quick Controls ».

Remarque : le style Material n’est pas un style natif d’Android. Il s’agit d’une implémentation 100 % multiplateforme du style Qt Quick Controls, conforme aux directives de Google Material Design. Ce style fonctionne sur toutes les plateformes et présente un rendu pratiquement identique partout. De légères différences peuvent toutefois apparaître en raison des variations entre les polices système disponibles et les moteurs de rendu des polices.

Remarque : les directives de Material Design évoluant au fil du temps, ce style peut modifier certaines valeurs de remplissage ou de police, par exemple, afin de garantir la cohérence avec ces directives.

Personnalisation

Le style Material prend en charge plusieurs attributs personnalisables. Certains de ces attributs s propagate nt aux éléments enfants de la même manière que fonts:

Boutons de style « Material » affichant les attributs « theme » et « elevation »

Les autres attributs ne sont pas transmis aux éléments enfants :

Dans l'exemple suivant, la fenêtre et les trois boutons radio s'affichent dans le thème sombre avec une couleur d'accent 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")
        }
    }
}

Commandes de style « Material » avec une touche de violet personnalisée

Outre la spécification des attributs dans QML, il est également possible d'en définir certains via des variables d'environnement ou dans un fichier de configuration. Les attributs spécifiés dans QML ont priorité sur toutes les autres méthodes.

Fichier de configuration

VariableDescription
ThemeSpécifie le thème Material par défaut. La valeur peut correspondre à l'un des thèmes disponibles, par exemple "Dark".
VariantSpécifie la variante de Material Design. Material Design propose deux variantes : une variante normale conçue pour les appareils tactiles, et une variante « dense » destinée aux ordinateurs de bureau. La variante « dense » utilise des tailles plus petites pour les contrôles et leurs polices.

La valeur peut être "Normal" ou "Dense".

AccentSpécifie la couleur d'accent par défaut de Material. La valeur peut être n'importe quelle couleur de la palette color, mais il est recommandé d'utiliser l'une des couleurs Material prédéfinies, par exemple "Teal".
PrimarySpécifie la couleur principale par défaut de Material. La valeur peut être n’importe quelle couleur color, mais il est recommandé d’utiliser l’une des couleurs Material prédéfinies, par exemple "BlueGrey".
ForegroundSpécifie la couleur de premier plan par défaut de Material. La valeur peut être n’importe quelle couleur color, ou l’une des couleurs Material prédéfinies, par exemple "Brown".
BackgroundSpécifie la couleur d'arrière-plan par défaut de Material. La valeur peut être n'importe quelle couleur color ou l'une des couleurs prédéfinies de Material, par exemple "Grey".

Consultez le fichier de configuration «Qt Quick Controls » pour plus de détails sur ce fichier.

Variables d’environnement

VariableDescription
QT_QUICK_CONTROLS_MATERIAL_THEMESpécifie le thème Material par défaut. La valeur peut correspondre à l'un des thèmes disponibles, par exemple "Dark".
QT_QUICK_CONTROLS_MATERIAL_VARIANTSpécifie la variante Material. Material Design propose deux variantes : une variante normale conçue pour les appareils tactiles, et une variante « dense » destinée aux ordinateurs de bureau. La variante « dense » utilise des tailles plus petites pour les contrôles et leurs polices.

La valeur peut être "Normal" ou "Dense".

QT_QUICK_CONTROLS_MATERIAL_ACCENTSpécifie la couleur d'accent par défaut de Material. La valeur peut être n'importe quelle couleur de la palette color, mais il est recommandé d'utiliser l'une des couleurs Material prédéfinies, par exemple "Teal".
QT_QUICK_CONTROLS_MATERIAL_PRIMARYSpécifie la couleur principale par défaut de Material. La valeur peut être n'importe quelle couleur color, mais il est recommandé d'utiliser l'une des couleurs Material prédéfinies, par exemple "BlueGrey".
QT_QUICK_CONTROLS_MATERIAL_FOREGROUNDSpécifie la couleur de premier plan par défaut de Material. La valeur peut être n'importe quelle couleur color, ou l'une des couleurs Material prédéfinies, par exemple "Brown".
QT_QUICK_CONTROLS_MATERIAL_BACKGROUNDSpécifie la couleur d'arrière-plan par défaut de Material. La valeur peut être n'importe quelle couleur color ou l'une des couleurs prédéfinies de Material, par exemple "Grey".

Consultez la section « Variables d’environnement prises en charge » à l’adresse Qt Quick Controls pour obtenir la liste complète des variables d’environnement prises en charge.

Dépendance

Le style Material doit être importé séparément pour pouvoir accéder aux attributs qui lui sont spécifiques. Il convient de noter que, quelles que soient les 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 à 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é, il doit être déployé avec l’application afin de pouvoir exécuter celle-ci quel que soit le style utilisé. L’utilisation de sélecteurs de fichiers permet d’appliquer des ajustements spécifiques à un style sans créer de dépendance stricte vis-à-vis de ce dernier.

Couleurs Material prédéfinies

Même si les couleurs « primaire » et « d'accent » peuvent être n'importe quelle color, il est recommandé d'utiliser l'une des couleurs prédéfinies, conçues pour s'harmoniser avec le reste de la palette du style Material :

Couleurs prédéfinies disponibles :

ConstanteDescription
Material.Red
#F44336
Material.Pink
#E91E63 (couleur d'accent par défaut)
Material.Purple
#9C27B0
Material.DeepPurple
#673AB7
Material.Indigo
#3F51B5 (couleur principale 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 activé, différentes nuances des couleurs prédéfinies sont utilisées par défaut :

ConstanteDescription
Material.Red
#EF9A9A
Material.Pink
#F48FB1 (couleur d'accent par défaut)
Material.Purple
#CE93D8
Material.DeepPurple
#B39DDB
Material.Indigo
#9FA8DA (couleur principale 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

Nuances prédéfinies

Il existe plusieurs nuances différentes pour chaque couleur prédéfinie qui peuvent être transmises à la fonction Material.color():

ConstanteValeur
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 « Material » propose également 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 utilisateur plus précise et plus flexible.

Pour utiliser la variante « dense », définissez la variable d’environnement « QT_QUICK_CONTROLS_MATERIAL_VARIANT » sur « Dense », ou spécifiez « Variant=Dense » dans le fichier « qtquickcontrols2.conf ». La valeur par défaut dans les deux cas est « Normal ».

Les images suivantes illustrent les différences entre certains contrôles selon que l’on utilise la variante normale ou la variante dense :

Commandes de style des matériaux dans la variante de taille normale

Commandes de style des matériaux dans la variante de taille compacte

Notez que les hauteurs indiquées ci-dessus peuvent varier en fonction des différences de polices entre les différentes plateformes.

Remarques spécifiques aux contrôles

TextArea

TextArea prend en charge deux styles de conteneur: « Filled » et « Outlined ». Les TextAreas de type « Outlined » comportent un texte de remplacement flottant situé en haut du contrôle. Cela nécessite que le texte de remplacement dépasse les limites du contrôle, ce qui peut entraîner son rognage lorsque l’ TextArea ou le Flickable dont il est un enfant définit ` clip ` sur ` true`. Pour éviter cela, ` topInset ` est défini sur une valeur appropriée dans ces cas-là.

Conformément aux directives Material, le texte de remplacement doit être court et ne pas s’étendre sur plusieurs lignes.

TextField

Le même problème de rognage que celui expliqué ci-dessus pour TextArea peut également se produire avec TextField. Pour éviter cela, topInset est défini sur une valeur appropriée lorsque le TextField définit clip sur true.

Conformément aux directives relatives au contenu, le texte de remplacement doit être court et ne pas s'étendre sur plusieurs lignes.

Documentation sur les propriétés associées

Material.accent: couleur

Cette propriété associée contient la couleur d'accentuation du thème. Elle peut être associée à n'importe quelle fenêtre ou à n'importe quel élément. Sa valeur est transmise aux éléments enfants.

La valeur par défaut est Material.Pink.

Dans l'exemple suivant, la couleur d'accentuation du bouton mis en évidence est remplacée par Material.Orange:

Button {
    text: qsTr("Button")
    highlighted: true
    Material.accent: Material.Orange
}

Éléments de contrôle de style illustrant la couleur d'accent

Remarque : même si la couleur d'accentuation peut être n'importe quelle couleur color, il est recommandé d'utiliser l'une des couleurs Material prédéfinies, conçues pour s'harmoniser avec le reste de la palette de styles Material.


Material.background: couleur

Cette propriété associée contient la couleur d’arrière-plan du thème. Elle peut être associée à n’importe quelle fenêtre ou à n’importe quel élément. La valeur est transmise aux éléments enfants.

La valeur par défaut dépend du thème (clair ou foncé).

Dans l'exemple suivant, la couleur d'arrière-plan du bouton est remplacée par « Material.Teal » :

Button {
    text: qsTr("Button")
    highlighted: true
    Material.background: Material.Teal
}

Éléments de contrôle de style « Material » illustrant la couleur d'arrière-plan


Material.elevation: int

Cette propriété associée contient la valeur d'élévation du contrôle. Plus la valeur d'élévation est élevée, plus l'ombre est profonde. Cette propriété peut être associée à n'importe quel contrôle, mais tous les contrôles ne permettent pas de visualiser l'élévation. La valeur n'est pas transmise aux éléments enfants.

La valeur par défaut dépend du contrôle.

Dans l'exemple suivant, l'élévation du volet est définie sur « 6 » afin de donner l'apparence d'une carte en relief:

Pane {
    width: 120
    height: 120

    Material.elevation: 6

    Label {
        text: qsTr("I'm a card!")
        anchors.centerIn: parent
    }
}

Commandes de style de matériau indiquant les niveaux de cotation


Material.foreground: color

Cette propriété associée contient la couleur de premier plan du thème. Elle peut être associée à n'importe quelle fenêtre ou à n'importe quel élément. Sa valeur est transmise aux éléments enfants.

La valeur par défaut dépend du thème (clair ou foncé).

Dans l'exemple suivant, la couleur de premier plan du bouton est définie sur « Material.Pink » :

Button {
    text: qsTr("Button")
    Material.foreground: Material.Pink
}

Bouton avec un premier plan rose, style Material


Material.primary: color

Cette propriété associée contient la couleur principale du thème. Elle peut être associée à n'importe quelle fenêtre ou à n'importe quel élément. Sa valeur est transmise aux éléments enfants.

La couleur principale 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 principale peut être n'importe quelle couleur de color, il est recommandé d'utiliser l'une des couleurs Material prédéfinies, conçues pour s'harmoniser parfaitement avec le reste de la palette de styles Material.


Material.theme: énumération

Cette propriété attachée indique si le thème est clair ou foncé. Elle peut être associée à n'importe quelle fenêtre ou à n'importe quel élément. La valeur est répercutée sur les éléments enfants.

Thèmes disponibles :

ConstanteDescription
Material.LightThème clair (par défaut)
Material.DarkThème sombre
Material.SystemThème système

Si vous définissez le thème sur « System », le thème clair ou foncé est choisi en fonction des couleurs du thème système. Cependant, lorsque vous lisez la valeur de la propriété « theme », celle-ci n’est jamais « System », mais correspond au thème réel.

Dans l'exemple suivant, le thème du volet et du bouton est défini sur « Material.Dark » :

Pane {
    Material.theme: Material.Dark

    Button {
        text: qsTr("Button")
    }
}

Panneau et bouton dans le thème « Material » sombre


Material.roundedScale: énumération

Cette propriété attachée contient le rayon des coins arrondis utilisés sur le contrôle cible. La propriété peut être attachée à n'importe quelle fenêtre ou à n'importe quel élément, mais seuls certains contrôles la prennent en charge. La valeur n'est pas propagée aux éléments enfants.

La valeur par défaut dépend du contrôle.

Échelles disponibles :

ConstanteDescription
Material.NotRoundedCoins carrés
Material.ExtraSmallScaleCoins arrondis très petits
Material.SmallScalePetits coins arrondis
Material.MediumScaleCoins arrondis moyens
Material.LargeScaleGrands coins arrondis
Material.ExtraLargeScaleCoins arrondis très larges
Material.FullScaleCoins entièrement arrondis

Cette propriété a été ajoutée dans Qt 6.5.

Voir aussi : Style Material : Forme.


Material.containerStyle: énumération

Cette propriété associée contient le style du conteneur utilisé par le contrôle cible. Elle peut être associée à n’importe quelle fenêtre ou à n’importe quel élément, mais seuls TextField et TextArea la prennent en charge par défaut. La valeur n’est pas propagée aux éléments enfants.

La valeur par défaut dépend du contrôle.

Styles disponibles :

ConstanteDescription
Material.FilledUtilisez la variante de conteneur rempli si elle est disponible
Material.OutlinedUtiliser la variante de conteneur avec contour si disponible

Cette propriété a été ajoutée dans Qt 6.5.

Voir aussi : Style « Material » : conteneurs de champs de texte.


Documentation des méthodes associées

color color(énumération prédéfinie, énumération nuance)

Cette méthode associée renvoie la valeur de couleur effective de la couleur de matériau prédéfinie spécifiée, combinée à la nuance indiquée. Si cet argument est omis, la nuance prend par défaut la valeur « Material.Shade500 ».

Rectangle {
    color: Material.color(Material.Red)
}

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