QML样式:Default 、Universal 、Material 

QML样式:Default 、Universal 、Material

目录

Default 样式

Universal Style

Customization

预定义的通用颜色

属性

Material 

Customization

预定义的材料颜色

预定义的阴影

Variants

附加属性

附加属性

Default 样式

  • 默认样式是基本的全面样式。
  • 默认样式是一种简单轻巧的样式,可为Qt快速控件提供最佳性能。它以最少的Qt Quick原语构建而成,并将动画和过渡效果保持在最低水平。

  • 运行Qt Quick Controls应用程序时默认选择样式。它内置在模块的资源中,因此默认情况下,它随依赖于Qt Quick Controls模块的任何应用程序一起提供。
  • 注意:默认样式用作其他样式的后备。如果某个样式未实现某个控件,则选择该控件的“默认”样式实现。

Universal Style

  • 通用样式基于Microsoft通用设计准则
  • 通用样式是基于Microsoft通用设计准则的与设备无关的样式。通用样式设计为在从手机,平板电脑到PC的所有设备上都不错。

  • 要运行具有通用样式的应用程序,请参阅《在Qt快速控件中使用样式》
  • 注意:通用样式不是Windows 10本机样式。通用样式是一种遵循Microsoft通用设计准则的100%跨平台Qt快速控件样式实现
    • 该样式可在任何平台上运行,并且在任何地方看起来或多或少都是相同的。由于可用的系统字体和字体呈现引擎的差异,可能会产生较小的差异。

Customization

  • 可以为任何窗口或项目指定这两个属性,并且它们以与font相同的方式自动传播到子级。在下面的示例中,窗口和所有三个单选按钮使用紫色的配色出现在深色主题中:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Universal 2.12

ApplicationWindow {
    visible: true

    Universal.theme: Universal.Dark
    Universal.accent: Universal.Violet

    Column {
        anchors.centerIn: parent

        RadioButton { text: qsTr("Small") }
        RadioButton { text: qsTr("Medium");  checked: true }
        RadioButton { text: qsTr("Large") }
    }
}
  • 除了在QML中指定属性外,还可以通过环境变量或在配置文件中指定属性
  • QML中指定的属性优先于所有其他方法

【配置文件】

Theme指定默认的通用主题。该值可以是可用主题之一,例如"Dark"
Accent指定默认的通用强调颜色。该值可以是任何颜色,但是建议使用例如预定义的通用颜色之一"Violet"
Foreground指定默认的Universal前景色。例如,该值可以是任何颜色,也可以是预定义的通用颜色之一"Brown"
Background指定默认的通用背景色。例如,该值可以是任何颜色,也可以是预定义的通用颜色之一"Steel"

【环境变量】

QT_QUICK_CONTROLS_UNIVERSAL_THEME指定默认的通用主题。该值可以是可用主题之一,例如"Dark"
QT_QUICK_CONTROLS_UNIVERSAL_ACCENT指定默认的通用强调颜色。该值可以是任何颜色,但是建议使用例如预定义的通用颜色之一"Violet"
QT_QUICK_CONTROLS_UNIVERSAL_FOREGROUND指定默认的Universal前景色。例如,该值可以是任何颜色,也可以是预定义的通用颜色之一"Brown"
QT_QUICK_CONTROLS_UNIVERSAL_BACKGROUND指定默认的通用背景色。例如,该值可以是任何颜色,也可以是预定义的通用颜色之一"Steel"

依赖性

  • 必须分别导入通用样式,才能访问特定于通用样式的属性。应该注意的是,无论对通用样式的引用如何,相同的应用程序代码都可以与任何其他样式一起运行。
  • 通用属性仅在应用程序以通用样式运行时才有效。
  • 如果将通用样式导入到始终加载的QML文件中,则必须将通用样式与应用程序一起部署,以便能够运行该应用程序,而与应用程序使用哪种样式无关。
  • 通过使用文件选择器,可以应用特定于样式的调整,而无需创建对样式的硬依赖性。

预定义的通用颜色

 

属性

【Universal.accent : color】

  • 该附加属性保留主题的强调色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为Universal.Cobalt
  • 在下面的示例中,突出显示的按钮的强调色更改为Universal.Orange

Button {
    text: qsTr("Button")
    highlighted: true
    Universal.accent: Universal.Orange
}
  • 注意:即使强调色可以是任何颜色,也建议使用一种预定义的通用颜色,该颜色经设计可与其他通用样式调色板很好地配合使用。

【Universal.background : color】

  • 该附加属性保留主题的背景色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为特定主题(light or dark)
  • 在以下示例中,窗格的背景色更改为Universal.Steel

Pane {
    Universal.background: Universal.Steel

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

【Universal.foreground : color】

  • 此附加属性保留主题的前景色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为特定主题(light or dark))。
  • 在下面的示例中,按钮的前景色设置为Universal.Pink

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

【Universal.theme : enumeration】

  • 此附加属性保留主题是浅色还是深色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 可用主题:
Universal.Light浅色主题(默认)
Universal.Dark黑暗主题
Universal.System系统主题
  • 将主题设置为System基于系统主题颜色可以选择浅色主题或深色主题。但是,在读取主题属性的值时,该值从不为System,而是实际的主题。
  • 在下面的示例中,窗格和按钮的主题均设置为Universal.Dark

Pane {
    Universal.theme: Universal.Dark

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

color color(enumeration predefined)

  • 该附加方法返回指定的预定义通用颜色的有效颜色值。
Rectangle {
    color: Universal.color(Universal.Red)
}

Material 

  • Material 样式基于Google材质设计指南。

  • 要运行具有Material样式的应用程序,请参阅《在Qt Quick Controls中使用样式》
  • 注意: Material样式不是本机Android样式。
    • Material样式是遵循Google Material Design指南的100%跨平台Qt快速控件样式实施。
    • 该样式可在任何平台上运行,并且在任何地方看起来或多或少都是相同的。
    • 由于可用的系统字体和字体呈现引擎的差异,可能会产生较小的差异。

Customization

  • 可以为任何窗口或项目指定所有属性,并且它们以与font相同的方式自动传播到子级。
  • 在下面的示例中,窗口和所有三个单选按钮以紫色主题色显示在深色主题中:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12

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") }
    }
}
  • 除了在QML中指定属性外,还可以通过环境变量或在配置文件中指定属性。
  • QML中指定的属性优先于所有其他方法。

【配置文件】

Theme指定默认的Material主题。该值可以是可用主题之一,例如"Dark"
Variant

指定材料变体。材质设计有两个变体:为触摸设备设计的普通变体和为台式机设计的密集变体。密集变体对控件及其字体使用较小的尺寸。

该值可以是"Normal""Dense"

Accent指定默认的“材质”强调颜色。该值可以是任何颜色,但是建议使用例如预定义的“材质”颜色之一"Teal"
Primary指定默认的Material原色。该值可以是任何颜色,但是建议使用例如预定义的“材质”颜色之一"BlueGrey"
Foreground指定默认的“材质前景色”。例如,该值可以是任何颜色,也可以是预定义的“材质”颜色之一"Brown"
Background指定默认的“材质”背景色。例如,该值可以是任何颜色,也可以是预定义的“材质”颜色之一"Grey"

【环境变量】

QT_QUICK_CONTROLS_MATERIAL_THEME指定默认的Material主题。该值可以是可用主题之一,例如"Dark"
QT_QUICK_CONTROLS_MATERIAL_VARIANT

指定材料变体。材质设计有两个变体:为触摸设备设计的普通变体和为台式机设计的密集变体。密集变体对控件及其字体使用较小的尺寸。

该值可以是"Normal""Dense"

QT_QUICK_CONTROLS_MATERIAL_ACCENT指定默认的“材质”强调颜色。该值可以是任何颜色,但是建议使用例如预定义的“材质”颜色之一"Teal"
QT_QUICK_CONTROLS_MATERIAL_PRIMARY指定默认的Material原色。该值可以是任何颜色,但是建议使用例如预定义的“材质”颜色之一"BlueGrey"
QT_QUICK_CONTROLS_MATERIAL_FOREGROUND指定默认的“材质前景色”。例如,该值可以是任何颜色,也可以是预定义的“材质”颜色之一"Brown"
QT_QUICK_CONTROLS_MATERIAL_BACKGROUND指定默认的“材质”背景色。例如,该值可以是任何颜色,也可以是预定义的“材质”颜色之一"Grey"

 

依赖性

  • 必须单独导入“材料”样式才能访问特定于“材料”样式的属性。应该注意的是,无论对Material样式的引用如何,相同的应用程序代码都可以与其他任何样式一起运行。特定于材料的属性仅在应用程序以“材料”样式运行时才有效。
  • 如果将Material样式导入到始终加载的QML文件中,则必须与应用程序一起部署Material样式,以便能够运行该应用程序,而与运行该应用程序所使用的样式无关。通过使用文件选择器,可以应用特定于样式的调整,而无需创建对样式的硬依赖性。

预定义的材料颜色

  • 即使主色和强调色可以是任何颜色,但仍建议使用一种预定义的颜色,该颜色经设计可与“材质”样式调色板的其余部分很好地配合使用:
  • 可用的预定义颜色:

  • 使用深色主题时,默认情况下使用不同阴影的预定义颜色:

预定义的阴影

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

Variants

  • Material样式还支持密集变体,其中按钮和委托等控件的高度较小,并且使用较小的字体。
  • 建议在桌面平台上使用密集变体,在该平台上,鼠标和键盘可以实现更精确,更灵活的用户交互。
  • 要使用密集变量,请将QT_QUICK_CONTROLS_MATERIAL_VARIANT环境变量设置为Dense,或Variant=Denseqtquickcontrols2.conf文件中指定。两种情况下的默认值均为Normal
  • 下图说明了使用普通变体和密集变体时某些控件之间的区别:

  • 请注意,上面显示的高度可能会根据跨平台的字体差异而有所不同。

附加属性

【Material.accent : color】

  • 该附加属性保留主题的强调色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为Material.Pink
  • 在下面的示例中,突出显示的按钮的强调色更改为Material.Orange

Button {
    text: qsTr("Button")
    highlighted: true
    Material.accent: Material.Orange
}
  • 注意:即使强调色可以是任何颜色,也建议使用一种预定义的“材料”颜色,该颜色被设计为可与“材料”样式调色板的其余部分很好地配合使用。

【Material.background : color】

  • 该附加属性保留主题的背景色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为特定主题(浅色或深色)。
  • 在下面的示例中,按钮的背景色更改为Material.Teal

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

【Material.elevation : int】

  • 此附加属性保留控件的高程。海拔越高,阴影越深。该属性可以附加到任何控件,但并非所有控件都可以使高程可视化。
  • 默认值是特定于控件的。
  • 在下面的示例中,将窗格的高程设置为6

Pane {
    width: 120
    height: 120

    Material.elevation: 6

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

【Material.foreground : color】

  • 此附加属性保留主题的前景色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认值为特定主题(浅色或深色)。
  • 在下面的示例中,按钮的前景色设置为Material.Pink

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

【Material.primary : color】

  • 该附加属性保留主题的原色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 默认情况下,原色用作ToolBar的背景色。
  • 默认值为Material.Indigo。
  • 注意:即使主要颜色可以是任何颜色,也建议使用一种预定义的“材料”颜色,该颜色经设计可与“材料”样式调色板的其余部分很好地配合使用。

【Material.theme : enumeration】

  • 此附加属性保留主题是浅色还是深色。该属性可以附加到任何窗口或项目。该值将传播给子代。
  • 可用主题:
Material.Light浅色主题(默认)
Material.Dark黑暗主题
Material.System系统主题
  • 将主题设置为System基于系统主题颜色可以选择浅色主题或深色主题。但是,在读取主题属性的值时,该值从不为System,而是实际的主题。
  • 在下面的示例中,窗格和按钮的主题均设置为Material.Dark

Pane {
    Material.theme: Material.Dark

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

附加属性

color color(enumeration predefined, enumeration shade)

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

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值