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
- accent: color
- fondo: color
- elevación: int
- primer plano: color
- primario: color
- tema: enumeración
- roundedScale: enumeración
- containerStyle: enumeración
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.
El tema claro del estilo Material. |
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:

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") } } } |
|
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
| Variable | Descripción |
|---|---|
Theme | Especifica el tema Material por defecto. El valor puede ser uno de los temas disponibles, por ejemplo "Dark". |
Variant | Especifica 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 |
Accent | Especifica 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". |
Primary | Especifica 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". |
Foreground | Especifica 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". |
Background | Especifica 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
| Variable | Descripción |
|---|---|
QT_QUICK_CONTROLS_MATERIAL_THEME | Especifica el tema Material por defecto. El valor puede ser uno de los temas disponibles, por ejemplo "Dark". |
QT_QUICK_CONTROLS_MATERIAL_VARIANT | Especifica 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 |
QT_QUICK_CONTROLS_MATERIAL_ACCENT | Especifica 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_PRIMARY | Especifica 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_FOREGROUND | Especifica 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_BACKGROUND | Especifica 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:
| Constante | Descripció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:
| Constante | Descripció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():
| Constante | Valor |
|---|---|
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:
|
|
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 } |
|
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 } |
|
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:
|
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 } |
|
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:
| Constante | Descripción |
|---|---|
Material.Light | Tema claro (por defecto) |
Material.Dark | Tema oscuro |
Material.System | Tema 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:
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:
| Constante | Descripción |
|---|---|
Material.NotRounded | Esquinas cuadradas |
Material.ExtraSmallScale | Esquinas redondeadas extra pequeñas |
Material.SmallScale | Esquinas redondeadas pequeñas |
Material.MediumScale | Esquinas redondeadas medianas |
Material.LargeScale | Esquinas redondeadas grandes |
Material.ExtraLargeScale | Esquinas redondeadas extragrandes |
Material.FullScale | Esquinas 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:
| Constante | Descripción |
|---|---|
Material.Filled | Utilizar la variante de contenedor relleno si está disponible |
Material.Outlined | Utiliza 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) }
Información relacionada
© 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.









