Sur cette page

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

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.

Galerie de contrôles dans le thème Material style light

Le thème clair du style Material.

Galerie de contrôles dans le thème Material style dark

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:

Boutons de style matériel montrant les attributs de thème et d'élévation

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")
        }
    }
}

Contrôles de style matériel avec accent violet personnalisé

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

VariableDescription de la variable
ThemeSpécifie le thème par défaut des matériaux. La valeur peut être l'un des thèmes disponibles, par exemple "Dark".
VariantSpé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 "Normal" ou "Dense".

AccentSpé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".
PrimarySpé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".
ForegroundSpé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".
BackgroundSpé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

VariableDescription de la variable
QT_QUICK_CONTROLS_MATERIAL_THEMESpé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_VARIANTSpé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 "Normal" ou "Dense".

QT_QUICK_CONTROLS_MATERIAL_ACCENTSpé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_PRIMARYSpé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_FOREGROUNDSpé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_BACKGROUNDSpé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 :

ConstanteDescription
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 :

ConstanteDescription
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() :

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 "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 :

Contrôles du style matériel dans la variante de taille normale

Contrôles du style de matériau dans la variante de taille 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
}

Le style de matériau contrôle la démonstration de la couleur d'accentuation

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
}

Les contrôles de style matériel démontrent la couleur d'arrière-plan


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:

Pane {
    width: 120
    height: 120

    Material.elevation: 6

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

Contrôles de style des matériaux montrant les niveaux d'élévation


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
}

Bouton à fond rose dans le style Material


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 :

ConstantDescription du thème
Material.LightThème clair (par défaut)
Material.DarkThème sombre
Material.SystemThè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:

Pane {
    Material.theme: Material.Dark

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

Volet et bouton dans le thème 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 :

ConstantesDescription
Material.NotRoundedCoins carrés
Material.ExtraSmallScaleCoins arrondis très petits
Material.SmallScalePetits coins arrondis
Material.MediumScaleCoins arrondis moyens
Material.LargeScaleGrands coins arrondis
Material.ExtraLargeScaleTrès grands coins arrondis
Material.FullScaleCoins 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 :

ConstanteDescription
Material.FilledUtiliser la variante de conteneur rempli si disponible
Material.OutlinedUtiliser 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)
}

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