Qt/QML 的应用层框架,比 WPF 更灵活、比 MFC 更现代,尤其适合:
- 工业上位机
- 嵌入式 GUI
- 车机 HMI
- 仪器仪表
- 跨平台桌面软件
- 触摸屏系统
Qt 官方本身提供的是:
- Qt Widgets
- Qt Quick/QML
但真正的大型项目,通常会在 QML 之上再构建:
text
MVVM
模块化
状态机
插件化
消息总线
导航
DI
业务框架
一、Qt/QML 最核心的官方框架
1. Qt Quick(QML)
官方现代 UI 框架。
核心:
text
QML + C++
结构:
text
UI(QML)
↓
ViewModel/C++
↓
业务逻辑
特点
声明式 UI
类似:
- WPF XAML
- Flutter
- React
例如:
qml
Button {
text: "OK"
}
GPU 加速
基于:
- Scene Graph
- OpenGL/Vulkan/Metal/D3D
非常适合:
- 动画
- 实时刷新
- 仪表盘
- 曲线
天然跨平台
支持:
- Windows
- Linux
- ARM
- MCU
- Android
- Embedded Linux
二、Qt 官方应用层框架
1. Qt Design Studio 架构
官方推荐:
text
UI设计
↓
QML界面
↓
C++ Backend
常见模式:
text
QML
↕
QObject
↕
业务逻辑
通过:
Q_PROPERTYsignals/slotsQQmlContext
绑定。
三、Qt/QML 常见架构模式
Qt 没有像 Prism 那样"绝对统治"的框架。
更多是:
各公司自己封装。
但主流架构模式比较统一。
四、Qt MVVM 框架
1. QtMvvm
社区较有名。
项目:
特点:
- 类似 WPF MVVM
- 导航
- ViewModel
- Settings
- DI
适合:
- 中大型项目
2. qtmvvm(轻量实现)
很多公司自己实现:
text
QObject ViewModel
+ Q_PROPERTY
+ signal/slot
例如:
cpp
class MainViewModel : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
};
QML:
qml
Text {
text: vm.name
}
这是目前最主流方式。
五、Felgo(非常成熟)
商业级 Qt/QML 应用框架。
项目:
功能
提供:
- 页面导航
- 状态管理
- 热更新
- 插件
- 后端通信
- 移动端支持
类似:
text
Qt + Flutter风格框架
适合
- 商业产品
- 跨平台 App
- 企业应用
六、Kirigami(KDE 官方)
KDE 的 QML 应用框架。
项目:
特点
适配:
- Desktop
- Tablet
- Mobile
提供:
- 导航
- 页面栈
- 响应式布局
类似:
text
Material + Fluent 风格
七、FluentUI for Qt/QML
现在非常热门。
项目:
功能
微软 Fluent 风格:
- NavigationView
- Acrylic
- Mica
- Win11 风格
大量国产 Qt 项目在用。
八、Qt Advanced Docking System(ADS)
工业软件很常见。
项目:
功能
类似:
- Visual Studio
- Qt Creator
支持:
- Dock
- 浮动窗口
- 自动隐藏
工业软件常见组合:
text
Qt/QML
+ ADS
+ 插件系统
九、工业软件中最常见的 Qt/QML 自研框架
实际上:
真正的大型 Qt 项目,很多都是"自研框架"。
结构通常:
text
Core
├── App
├── UI
├── Device
├── Comm
├── Plugin
├── Script
├── Log
├── Database
└── Algorithm
十、Qt/QML 最常见架构(工业界)
1. MVVM(最主流)
Qt/QML 非常适合 MVVM。
结构:
text
QML(View)
↓
ViewModel(QObject)
↓
Model
2. 状态机架构
Qt 官方:
QStateMachine
工业控制大量使用:
text
Idle
→ Connect
→ Run
→ Alarm
3. 事件总线
常见:
text
signal/slot
或:
text
EventBus
4. 插件化
Qt 插件机制很成熟:
cpp
QPluginLoader
工业平台大量使用。
十一、车机/HMI 常见框架
车机领域:
text
Qt/QML
+ 状态机
+ CAN总线
+ 动画引擎
非常常见。
很多:
- 仪表盘
- 中控
- HUD
都是 QML。
十二、嵌入式 Qt/QML 架构
常见:
text
QML UI
↓
C++ Service
↓
硬件抽象层
设备:
- ARM Linux
- i.MX6
- RK3568
- STM32MP1
十三、Qt/QML 与 Widgets 的关系
现在大型 Qt 项目有三种:
1. 纯 Widgets
传统工业软件。
优点:
- 稳定
- 资源低
缺点:
- UI老
2. Widgets + QML 混合(最常见)
结构:
text
Widgets主框架
↓
QML子页面
工业界非常常见。
3. 纯 QML
现代项目。
优点:
- 动画强
- UI现代
缺点:
- 超大型复杂界面有时不如 Widgets 好维护
十四、现在最主流 Qt/QML 技术栈
中小项目
推荐:
text
Qt Quick
+ QML
+ QObject MVVM
大型工业项目
推荐:
text
Qt Widgets
+ QML
+ ADS
+ Plugin
+ MVVM
现代 Win11 风格项目
推荐:
text
Qt/QML
+ FluentUI
十五、Qt/QML vs WPF vs Flutter
| 特性 | Qt/QML | WPF | Flutter |
|---|---|---|---|
| 跨平台 | 强 | 无 | 强 |
| GPU UI | 强 | 强 | 强 |
| 工业软件 | 非常强 | 强 | 一般 |
| 嵌入式 | 非常强 | 无 | 一般 |
| Win原生 | 一般 | 强 | 一般 |
| MVVM | 强 | 非常强 | 一般 |
| 动画 | 强 | 中 | 非常强 |
十六、目前业内最常见 Qt 架构组合
| 场景 | 组合 |
|---|---|
| 工业软件 | Widgets + QML + ADS |
| 车机HMI | 纯QML + 状态机 |
| 嵌入式 | QML + C++ |
| 平台软件 | Qt + Plugin |
| Win11风格 | Qt + FluentUI |