Material 风格
Material 风格基于 Google Material Design 设计指南。更多...
| 导入语句: | import QtQuick.Controls.Material |
| 自: | Qt 5.7 |
关联属性
关联方法
- colorcolor(枚举 predefined, 枚举 shade)
详细说明
Material 风格基于Google Material Design 设计指南。它能够提供跨平台和跨设备尺寸的统一体验。
Material 风格的浅色主题。 |
Material 风格的深色主题。 |
若要运行采用 Material 样式的应用程序,请参阅《Qt Quick Controls 中的样式使用指南》。
注意: Material风格 并非原生 Android 风格。Material 风格是完全遵循 Google Material Design 设计指南的、100% 跨平台的Qt Quick Controls 风格实现。该风格可在任何平台上运行,且在各平台上的外观基本一致。由于可用系统字体和字体渲染引擎的差异,可能会出现细微差别。
注意:随着 Material Design 设计指南的不断更新,该样式可能会调整某些内边距或字体参数,例如,以保持与设计指南的一致性。
自定义
Material 样式支持多种可自定义属性。其中一些属性propagate 会像fonts 一样,将属性传递给子元素:

其余属性不会传播到子元素:
在下面的示例中,窗口和三个单选按钮均以深色主题显示,并使用紫色作为强调色:
|
|
除了在 QML 中指定属性外,还可以通过环境变量或在配置文件中指定部分属性。在 QML 中指定的属性优先于所有其他指定方式。
配置文件
| 变量 | 描述 |
|---|---|
Theme | 指定默认的Material 主题。该值可以是可用主题之一,例如"Dark" 。 |
Variant | 指定 Material 变体。Material Design 有两种变体:一种是为触控设备设计的标准变体,另一种是适用于桌面的紧凑变体。紧凑变体采用更小的控件尺寸及其字体。 其值可以是 |
Accent | 指定默认的Material 强调色。该值可以是任意color ,但建议使用预定义的 Material 颜色之一,例如"Teal" 。 |
Primary | 指定默认的Material 主色。该值可以是任何color ,但建议使用预定义的 Material 颜色之一,例如"BlueGrey" 。 |
Foreground | 指定默认的Material 前景色。该值可以是任何color ,也可以是预定义的 Material 颜色之一,例如"Brown" 。 |
Background | 指定默认的Material 背景色。该值可以是任何color ,或预定义的 Material 颜色之一,例如"Grey" 。 |
有关配置文件的更多详细信息,请参阅《Qt Quick Controls 配置文件》。
环境变量
| 变量 | 描述 |
|---|---|
QT_QUICK_CONTROLS_MATERIAL_THEME | 指定默认的Material 主题。该值可以是可用主题之一,例如"Dark" 。 |
QT_QUICK_CONTROLS_MATERIAL_VARIANT | 指定 Material 变体。Material Design 有两种变体:一种是为触控设备设计的标准变体,另一种是面向桌面的高密度变体。高密度变体采用更小的控件尺寸及其字体。 其值可以是 |
QT_QUICK_CONTROLS_MATERIAL_ACCENT | 指定默认的Material 强调色。该值可以是任意color ,但建议使用预定义的 Material 颜色之一,例如"Teal" 。 |
QT_QUICK_CONTROLS_MATERIAL_PRIMARY | 指定默认的Material 主色。该值可以是任何color ,但建议使用预定义的 Material 颜色之一,例如"BlueGrey" 。 |
QT_QUICK_CONTROLS_MATERIAL_FOREGROUND | 指定默认的Material 前景色。该值可以是任何color ,也可以是预定义的 Material 颜色之一,例如"Brown" 。 |
QT_QUICK_CONTROLS_MATERIAL_BACKGROUND | 指定默认的Material 背景色。该值可以是任何color ,也可以是预定义的 Material 颜色之一,例如"Grey" 。 |
有关支持的环境变量的完整列表,请参阅 Qt Quick Controls 中的“支持的环境变量”。
依赖项
必须单独导入 Material 样式,才能使用该样式特有的属性。需要注意的是,无论是否引用了 Material 样式,相同的应用程序代码在任何其他样式下均可运行。Material 特有的属性仅在应用程序以 Material 样式运行时才生效。
如果 Material 样式被导入到一个始终加载的 QML 文件中,则必须将 Material 样式与应用程序一同部署,这样无论应用程序使用哪种样式运行,都能正常运行。通过使用文件选择器,可以在不与样式建立硬依赖关系的情况下应用特定于样式的调整。
预定义的 Material 颜色
尽管主色和点缀色可以是任意color ,但建议使用预定义的颜色之一,这些颜色经过专门设计,可与 Material 风格色板中的其他颜色完美搭配:
可用的预定义颜色:
| 常量 | 描述 |
|---|---|
Material.Red | #F44336 |
Material.Pink | #E91E63(默认强调色) |
Material.Purple | #9C27B0 |
Material.DeepPurple | #673AB7 |
Material.Indigo | #3F51B5(默认主色) |
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 |
当启用深色主题时,系统会默认使用预定义颜色的不同色调:
| 常量 | 描述 |
|---|---|
Material.Red | #EF9A9A |
Material.Pink | #F48FB1(默认强调色) |
Material.Purple | #CE93D8 |
Material.DeepPurple | #B39DDB |
Material.Indigo | #9FA8DA(默认主色) |
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 |
预定义色调
每种预定义颜色都有几种不同的色调,这些色调可以传递给Material.color()函数:
| 常量 | 值 |
|---|---|
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 |
变体
“Material”样式还支持一种紧凑变体,其中按钮和委托等控件的高度较小,且使用较小的字体大小。建议在桌面平台上使用紧凑变体,因为在这些平台上,鼠标和键盘能够提供更精确、更灵活的用户交互。
要使用紧凑变体,可将QT_QUICK_CONTROLS_MATERIAL_VARIANT 环境变量设置为Dense ,或在qtquickcontrols2.conf文件中指定Variant=Dense 。这两种情况下的默认值均为Normal 。
下图展示了使用普通和密集变体时,部分控件之间的差异:
|
|
请注意,上图所示的高度可能会因不同平台字体差异而有所不同。
控件相关说明
TextArea
TextArea 支持两种容器样式:Filled 和Outlined 。带轮廓的 TextArea 其占位符文本为浮动式,位于控件顶部。 这要求占位符文本超出控件边界,当其父控件(TextArea 或Flickable)将clip 设置为true 时,可能会导致占位符文本被裁剪。为避免此情况,在上述情况下应将topInset 设置为适当值。
根据 Material 设计规范,占位文本应简短,且不应占用多行。
TextField
上文针对TextArea 所说明的裁剪问题,在 TextField中也可能出现。为避免此问题,当TextField 将clip设置为true 时,应将topInset 设置为适当值。
根据 Material 设计规范,占位符文本应简短,且不应占用多行。
附带的属性文档
Material.accent:color |
此附加属性存储主题的强调色。该属性可附加到任何窗口或项目上。其值将传播给子元素。
默认值为Material.Pink 。
在下面的示例中,高亮按钮的强调色被更改为Material.Orange :
|
|
注意:尽管 强调色可以是任意color ,但 建议使用预定义的Material颜色之一,这些颜色经过专门设计,能与Material风格配色方案中的其他颜色完美搭配。
Material.background:color |
此附加属性用于存储主题的背景色。该属性可附加到任何窗口或项目上。其值会传播给子元素。
默认值取决于主题(浅色或深色)。
在下面的示例中,按钮的背景色被更改为Material.Teal :
|
|
Material.elevation:int |
此附加属性保存控件的浮雕高度。浮雕高度越高,阴影越深。该属性可附加到任何控件,但并非所有控件都会显示浮雕效果。该值不会传播给子控件。
默认值因控件而异。
在下面的示例中,将窗格的 elevation 属性设置为6 ,以呈现出凸起的卡片效果:
|
Material.foreground:color |
此附加属性保存主题的前景色。该属性可附加到任何窗口或项上。其值会传播给子元素。
默认值取决于主题(浅色或深色)。
在下面的示例中,按钮的前景色被设置为Material.Pink :
|
|
Material.primary:color |
此附加属性保存了主题的主色。该属性可附加到任何窗口或项目上。其值会传播给子元素。
默认情况下,主色将用作ToolBar 的背景色。
默认值为Material.Indigo 。
注意:尽管 主色可以是任何color ,但 建议使用预定义的Material颜色之一,这些颜色经过专门设计,可与Material风格色板中的其他颜色完美搭配。
Material.theme:枚举 |
此附加属性用于指定主题是浅色还是深色。该属性可附加到任何窗口或项目上。该值会传播给子元素。
可用主题:
| 常量 | 描述 |
|---|---|
Material.Light | 浅色主题(默认) |
Material.Dark | 深色主题 |
Material.System | 系统主题 |
将主题设置为System 时,系统会根据系统主题的颜色自动选择浅色或深色主题。但是,在读取主题属性的值时,该值绝不会是System ,而是实际的主题。
在下面的示例中,窗格和按钮的主题均设置为Material.Dark :
Material.roundedScale:枚举 |
此附加属性保存目标控件所使用的圆角半径。该属性可附加到任何窗口或项目上,但仅部分控件支持该属性。该值不会传播给子控件。
默认值因控件而异。
可用圆角半径:
| 常量 | 说明 |
|---|---|
Material.NotRounded | 方角 |
Material.ExtraSmallScale | 超小圆角 |
Material.SmallScale | 小圆角 |
Material.MediumScale | 中等圆角 |
Material.LargeScale | 大圆角 |
Material.ExtraLargeScale | 超大圆角 |
Material.FullScale | 完全圆角 |
该属性是在 Qt 6.5 中添加的。
另请参阅:Material 样式:形状。
Material.containerStyle:枚举 |
此附加属性存储目标控件所用容器的样式。该属性可附加到任何窗口或项上,但默认情况下仅TextField 和TextArea 支持该属性。该值不会传播到子控件。
默认值因控件而异。
可用样式:
| 常量 | 说明 |
|---|---|
Material.Filled | 如有提供,请使用实心容器样式 |
Material.Outlined | 如果可用,请使用带轮廓的容器变体 |
该属性在 Qt 6.5 中新增。
另请参阅:Material 样式:文本字段容器。
附带的方法文档
color color(枚举 predefined,枚举 shade) |
此附加方法返回指定预定义 Material 颜色与给定色调组合后的实际颜色值。如果省略,色调参数的默认值为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.









