En esta página

Estilo Material

El estilo Material se basa en las directrices de diseño Material de Google. Más...

Declaración de Importación: import QtQuick.Controls.Material
Desde: Qt 5.7

Propiedades adjuntas

Métodos adjuntos

  • color color(enumeración predefinida, enumeración tono)

Descripción detallada

El estilo Material se basa en las directrices de diseño Material de Google. Permite una experiencia unificada en todas las plataformas y tamaños de dispositivo.

Galería de controles en el tema Material style light

El tema claro del estilo Material.

Galería de controles en el tema oscuro Material Style

El tema oscuro del estilo Material.

Para ejecutar una aplicación con el estilo Material, consulte Uso de estilos en Qt Quick Controls.

Nota: El estilo Material no es un estilo nativo de Android. El estilo Material es una implementación de estilo 100% multiplataforma de Qt Quick Controls que sigue las directrices de diseño Material de Google. El estilo funciona en cualquier plataforma y tiene un aspecto más o menos idéntico en todas partes. Pueden producirse pequeñas diferencias debido a las diferencias en las fuentes disponibles en el sistema y en los motores de renderizado de fuentes.

Nota: A medida que las directrices de Material Design cambien con el tiempo, este estilo puede cambiar ciertos valores de relleno o fuente, por ejemplo, con el fin de mantener la coherencia con las directrices.

Personalización

El estilo Material admite varios atributos personalizables. Algunos de estos atributos propagate a los hijos de la misma manera que fonts:

Botones de estilo material que muestran atributos de tema y elevación

El resto de atributos no se propagan a los hijos:

En el siguiente ejemplo, la ventana y los tres botones de radio aparecen en el tema oscuro utilizando un color de acento púrpura:

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

Controles de estilo Material con acento morado personalizado

Además de especificar los atributos en QML, también es posible especificar algunos de ellos mediante variables de entorno o en un archivo de configuración. Los atributos especificados en QML tienen prioridad sobre todos los demás métodos.

Fichero de configuración

VariableDescripción
ThemeEspecifica el tema Material por defecto. El valor puede ser uno de los temas disponibles, por ejemplo "Dark".
VariantEspecifica la variante de Material. El Material Design tiene dos variantes: una variante normal diseñada para dispositivos táctiles, y una variante densa para escritorio. La variante densa utiliza tamaños más pequeños para los controles y sus fuentes.

El valor puede ser "Normal" o "Dense".

AccentEspecifica el color de acento Material por defecto. El valor puede ser cualquiera color, pero se recomienda utilizar uno de los colores predefinidos de Material, por ejemplo "Teal".
PrimaryEspecifica el color primario por defecto del Material. El valor puede ser cualquiera color, pero se recomienda utilizar uno de los colores predefinidos de Material, por ejemplo "BlueGrey".
ForegroundEspecifica el color de primer plano por defecto del Material. El valor puede ser cualquiera color, o uno de los colores predefinidos de Material, por ejemplo "Brown".
BackgroundEspecifica el color de fondo por defecto del Material. El valor puede ser cualquiera color, o uno de los colores predefinidos de Material, por ejemplo "Grey".

Consulte Qt Quick Controls Archivo de configuración para obtener más información sobre el archivo de configuración.

Variables de entorno

VariableDescripción
QT_QUICK_CONTROLS_MATERIAL_THEMEEspecifica el tema Material por defecto. El valor puede ser uno de los temas disponibles, por ejemplo "Dark".
QT_QUICK_CONTROLS_MATERIAL_VARIANTEspecifica la variante de Material. El Material Design tiene dos variantes: una variante normal diseñada para dispositivos táctiles, y una variante densa para escritorio. La variante densa utiliza tamaños más pequeños para los controles y sus fuentes.

El valor puede ser "Normal" o "Dense".

QT_QUICK_CONTROLS_MATERIAL_ACCENTEspecifica el color de acento Material por defecto. El valor puede ser cualquiera color, pero se recomienda utilizar uno de los colores predefinidos de Material, por ejemplo "Teal".
QT_QUICK_CONTROLS_MATERIAL_PRIMARYEspecifica el color primario por defecto del Material. El valor puede ser cualquiera color, pero se recomienda utilizar uno de los colores predefinidos de Material, por ejemplo "BlueGrey".
QT_QUICK_CONTROLS_MATERIAL_FOREGROUNDEspecifica el color de primer plano por defecto del Material. El valor puede ser cualquiera color, o uno de los colores predefinidos de Material, por ejemplo "Brown".
QT_QUICK_CONTROLS_MATERIAL_BACKGROUNDEspecifica el color de fondo por defecto del Material. El valor puede ser cualquiera color, o uno de los colores predefinidos de Material, por ejemplo "Grey".

Consulte Variables de entorno compatibles en Qt Quick Controls para ver la lista completa de variables de entorno compatibles.

Dependencia

El estilo Material debe importarse por separado para poder acceder a los atributos específicos del estilo Material. Debe tenerse en cuenta que, independientemente de las referencias al estilo Material, el mismo código de aplicación se ejecuta con cualquier otro estilo. Los atributos específicos de Material sólo tienen efecto cuando la aplicación se ejecuta con el estilo Material.

Si el estilo Material se importa en un archivo QML que se carga siempre, el estilo Material debe desplegarse con la aplicación para poder ejecutar la aplicación independientemente del estilo con el que se ejecute la aplicación. Mediante el uso de selectores de archivo, se pueden aplicar ajustes específicos de estilo sin crear una dependencia dura a un estilo.

Colores de material predefinidos

Aunque el primario y el acento pueden ser cualquiera color, se recomienda utilizar uno de los colores predefinidos que han sido diseñados para funcionar bien con el resto de la paleta de estilos Material:

Colores predefinidos disponibles:

ConstanteDescripción
Material.Red
#F44336
Material.Pink
#E91E63 (acento por defecto)
Material.Purple
#9C27B0
Material.DeepPurple
#673AB7
Material.Indigo
#3F51B5 (primario por defecto)
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

Cuando se utiliza el tema oscuro, se utilizan por defecto diferentes tonos de los colores predefinidos:

ConstanteDescripción
Material.Red
#EF9A9A
Material.Pink
#F48FB1 (acento por defecto)
Material.Purple
#CE93D8
Material.DeepPurple
#B39DDB
Material.Indigo
#9FA8DA (primario por defecto)
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

Tonos predefinidos

Hay varios tonos diferentes de cada color predefinido que se pueden pasar a la función Material.color():

ConstanteValor
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

Véase también Estilo básico, Estilo universal

Variantes

El estilo Material también admite una variante densa, en la que los controles como botones y delegados tienen una altura menor y utilizan tamaños de fuente más pequeños. Se recomienda utilizar la variante densa en plataformas de escritorio, donde el ratón y el teclado permiten una interacción más precisa y flexible con el usuario.

Para utilizar la variante densa, establezca la variable de entorno QT_QUICK_CONTROLS_MATERIAL_VARIANT en Dense, o especifique Variant=Dense en el archivo qtquickcontrols2.conf. El valor por defecto en ambos casos es Normal.

Las siguientes imágenes ilustran las diferencias entre algunos de los controles cuando se utilizan las variantes normal y densa:

Controles de estilo de material en la variante de tamaño normal

Controles de estilo de material en variante de tamaño denso

Tenga en cuenta que las alturas mostradas pueden variar en función de las diferencias en los tipos de letra de las distintas plataformas.

Notas específicas sobre los controles

Área de texto

TextArea soporta dos containerStyles: Filled y Outlined. Las áreas de texto con contorno tienen un texto flotante que se sitúa en la parte superior del control. Esto requiere que el texto del marcador de posición salga de los límites del control, lo que puede hacer que se recorte cuando el TextArea o el Flickable del que es hijo establece clip a true. Para evitar esto, topInset se establece en un valor apropiado en estos casos.

Según las directrices de Material, el texto del marcador de posición debe ser corto y no ocupar varias líneas.

Campo de texto

El mismo problema de recorte explicado anteriormente para TextArea también puede ocurrir con TextField. Para evitarlo, topInset se ajusta a un valor apropiado cuando TextField ajusta el clip a true.

De acuerdo con las directrices de Material, el texto del marcador de posición debe ser breve y no ocupar varias líneas.

Documentación de propiedades adjuntas

Material.accent: color

Esta propiedad adjunta contiene el color de acento del tema. La propiedad puede adjuntarse a cualquier ventana o elemento. El valor se propaga a los hijos.

El valor por defecto es Material.Pink.

En el siguiente ejemplo, el color de acento del botón resaltado se cambia a Material.Orange:

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

El estilo del material controla la demostración del color de acento

Nota: Aunque el acento puede ser cualquiera color, se recomienda utilizar uno de los colores Material predefinidos que han sido diseñados para funcionar bien con el resto de la paleta de estilos Material.


Material.background: color

Esta propiedad adjunta contiene el color de fondo del tema. La propiedad puede adjuntarse a cualquier ventana o elemento. El valor se propaga a los hijos.

El valor por defecto es específico del tema (claro u oscuro).

En el siguiente ejemplo, el color de fondo del botón se cambia a Material.Teal:

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

Controles de estilo del material que demuestran el color de fondo


Material.elevation: int

Esta propiedad adjunta contiene la elevación del control. Cuanto mayor sea la elevación, más profunda será la sombra. La propiedad puede ser adjuntada a cualquier control, pero no todos los controles visualizan la elevación. El valor no se propaga a los controles hijos.

El valor por defecto es específico del control.

En el siguiente ejemplo, la elevación del panel se establece en 6 para conseguir el aspecto de una tarjeta elevada:

Pane {
    width: 120
    height: 120

    Material.elevation: 6

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

Controles de estilo de material que muestran los niveles de elevación


Material.foreground: color

Esta propiedad adjunta contiene el color de primer plano del tema. La propiedad puede adjuntarse a cualquier ventana o elemento. El valor se propaga a los hijos.

El valor por defecto es específico del tema (claro u oscuro).

En el siguiente ejemplo, el color de primer plano del botón es Material.Pink:

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

Botón con primer plano rosa en estilo Material


Material.primario: color

Esta propiedad adjunta contiene el color primario del tema. La propiedad puede adjuntarse a cualquier ventana o elemento. El valor se propaga a los hijos.

El color primario se utiliza como color de fondo de ToolBar por defecto.

El valor por defecto es Material.Indigo.

Nota: Aunque el primario puede ser cualquiera color, se recomienda utilizar uno de los colores predefinidos de Material que han sido diseñados para funcionar bien con el resto de la paleta de estilos de Material.


Material.theme: enumeración

Esta propiedad adjunta indica si el tema es claro u oscuro. La propiedad puede adjuntarse a cualquier ventana o elemento. El valor se propaga a los hijos.

Temas disponibles:

ConstanteDescripción
Material.LightTema claro (por defecto)
Material.DarkTema oscuro
Material.SystemTema del sistema

Si se establece el tema en System, se elige el tema claro u oscuro en función de los colores del tema del sistema. Sin embargo, cuando se lee el valor de la propiedad theme, el valor nunca es System, sino el tema actual.

En el siguiente ejemplo, el tema del panel y del botón es Material.Dark:

Pane {
    Material.theme: Material.Dark

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

Panel y botón en el tema Material dark


Material.roundedScale: enumeración

Esta propiedad adjunta contiene el radio de las esquinas redondeadas utilizadas en el control destino. La propiedad puede ser adjuntada a cualquier ventana o ítem, pero sólo algunos controles la soportan. El valor no se propaga a los controles hijos.

El valor por defecto es específico del control.

Escalas disponibles:

ConstanteDescripción
Material.NotRoundedEsquinas cuadradas
Material.ExtraSmallScaleEsquinas redondeadas extra pequeñas
Material.SmallScaleEsquinas redondeadas pequeñas
Material.MediumScaleEsquinas redondeadas medianas
Material.LargeScaleEsquinas redondeadas grandes
Material.ExtraLargeScaleEsquinas redondeadas extragrandes
Material.FullScaleEsquinas totalmente redondeadas

Esta propiedad se añadió en Qt 6.5.

Véase también: Material Style: Forma.


Material.containerStyle: enumeración

Esta propiedad adjunta contiene el estilo del contenedor utilizado por el control destino. La propiedad puede adjuntarse a cualquier ventana o elemento, pero sólo TextField y TextArea lo soportan por defecto. El valor no se propaga a los hijos.

El valor por defecto es específico del control.

Estilos disponibles:

ConstanteDescripción
Material.FilledUtilizar la variante de contenedor relleno si está disponible
Material.OutlinedUtiliza la variante de contenedor con contorno si está disponible

Esta propiedad se añadió en Qt 6.5.

Véase también: Estilo de Material: Text Field Containers.


Documentación del método adjunto

color color(enumeración predefinida, enumeración tono)

Este método adjunto devuelve el valor efectivo del color del Material predefinido especificado combinado con el tono dado. Si se omite, el argumento shade es por defecto 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.