当前位置: 首页 > news >正文

QML Universal样式

Qt Quick Controls 2 的 Universal 风格实现了 Microsoft Fluent Design 规范,提供适合 Windows 平台的 UI 组件。

基本属性

全局属性(通过 Universal 对象访问)

属性类型默认值描述
themeenumUniversal.Light主题风格 (Light/Dark/System)
accentcolor"#0078D7"强调色 (Windows 蓝)
foregroundcolor根据主题自动计算前景色
backgroundcolor根据主题自动计算背景色
fontFont系统字体全局字体设置

组件通用属性

属性类型描述
Universal.accentcolor组件强调色覆盖
Universal.foregroundcolor组件前景色覆盖
Universal.backgroundcolor组件背景色覆盖

常用方法

方法参数描述
Universal.color()type (enum)获取主题颜色

颜色类型枚举

qml

Universal.Accent
Universal.Background
Universal.Foreground
Universal.ThemeDark
Universal.ThemeLight

信号

信号描述
Universal.themeChanged()主题变化时触发
Universal.accentChanged()强调色变化时触发

基础使用示例

qml

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Universal 2.15ApplicationWindow {Universal.theme: Universal.DarkUniversal.accent: Universal.color(Universal.Orange)Button {text: "Universal Button"Universal.foreground: "white"}
}

组件样式定制

按钮样式

qml

Button {text: "Fluent Button"Universal.foreground: Universal.accentUniversal.background: "transparent"
}

文本字段样式

qml

TextField {placeholderText: "Universal Field"Universal.accent: Universal.color(Universal.Green)
}

导航视图

qml

Pane {Universal.background: Universal.theme === Universal.Light ? "#f3f3f3" : "#202020"
}

主题切换示例

qml

Button {text: "Toggle Theme"onClicked: Universal.theme = Universal.theme === Universal.Light ? Universal.Dark : Universal.Light
}ComboBox {model: ["Blue", "Green", "Red", "Orange"]onActivated: Universal.accent = Qt.color(model[index])
}

完整组件示例

qml

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Universal 2.15ApplicationWindow {width: 400height: 600visible: truetitle: "Universal Demo"Universal.theme: Universal.SystemUniversal.accent: Universal.CobaltColumn {spacing: 20anchors.centerIn: parentButton {text: "Flat Button"Universal.foreground: Universal.accent}Slider {width: 200Universal.accent: Universal.Emerald}Switch {text: "Universal Switch"Universal.foreground: Universal.Red}ProgressBar {width: 200value: 0.6Universal.accent: Universal.Violet}}
}

颜色参考表

颜色名称示例值描述
Lime#a4c400Windows 特色颜色
Green#60a917
Emerald#008a00
Teal#00aba9
Cyan#1ba1e2
Cobalt#0050ef
Indigo#6a00ff
Violet#aa00ff
Pink#f472d0
Magenta#d80073
Crimson#a20025
Red#e51400
Orange#fa6800
Amber#f0a30a
Yellow#e3c800
Brown#825a2c
Olive#6d8764
Steel#647687
Mauve#76608a
Taupe#87794e

与 Material 风格的主要区别

  1. 设计语言

    • Universal 遵循 Fluent Design (Microsoft)

    • Material 遵循 Material Design (Google)

  2. 默认交互效果

    • Universal 使用更微妙的动画和阴影

    • Material 使用更明显的波纹效果

  3. 颜色系统

    • Universal 使用 Windows 特色颜色集

    • Material 使用 Google 标准颜色集

  4. 组件样式

    • Universal 控件边框更锐利

    • Material 控件圆角更明显

如需进一步了解具体控件的 Universal 样式属性(如 ListViewMenu),可查阅 Qt 官方文档。 

相关文章:

  • 智谱开源新一代GLM模型,全面布局AI智能体生态
  • FISCO 2.0 安装部署WeBASE与区块链浏览器(环境搭建)
  • 考研系列-计算机网络-第三章、数据链路层
  • 并发设计模式实战系列(4):线程池
  • 网络安全知识点3
  • 即插即用模块(1) -MAFM特征融合
  • HCIA-Datacom高阶:vlan、vlanif、单臂路由、静态路由、ospf综合实验
  • 动态调整映射关系的一致性哈希负载均衡算法详解
  • Kubernetes控制平面组件:API Server代码基础概念
  • 【Python语言基础】23、文件处理
  • 基于Springboot的网上拍卖系统
  • iwebsec靶场 文件包含关卡通关笔记11-ssh日志文件包含
  • Mysql相关知识2:Mysql隔离级别、MVCC、锁
  • 大数定理(LLN)习题集 · 题目篇
  • 深入了解802.11b:无线局域网的重要里程碑
  • QML 状态系统
  • Pycharm 如何删除某个 Python Interpreter
  • Arduino示例代码讲解:Project 07 - Keyboard 键盘
  • FastAPI-MCP
  • C++运算符重载详解
  • 央媒聚焦人形机器人:为何发展突然加速?中国制造有何优势?
  • 中共中央办公厅、国务院办公厅印发《农村基层干部廉洁履行职责规定》
  • 淄博张店区国资公司挂牌转让所持“假国企”股权,转让底价为1元
  • 申花迎来中超三连胜,这一次终于零封对手了
  • 纪念沈渭滨︱志于道而游曳于士和氓间的晚年沈先生
  • 新消费观察 | 重点深耕,外资科技企业继续看好中国发展