文章的目的为了记录使用QT QML开发学习的经历。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。
相关链接:
开源 C++ QT QML 开发(一)基本介绍
开源 C++ QT QML 开发(二)工程结构
开源 C++ QT QML 开发(三)常用控件
开源 C++ QT QML 开发(四)复杂控件--Listview
开源 C++ QT QML 开发(五)复杂控件--Gridview
推荐链接:
开源 C# 快速开发(一)基础知识
开源 C# 快速开发(二)基础控件
开源 C# 快速开发(三)复杂控件
开源 C# 快速开发(四)自定义控件--波形图
开源 C# 快速开发(五)自定义控件--仪表盘
开源 C# 快速开发(六)自定义控件--圆环
开源 C# 快速开发(七)通讯--串口
开源 C# 快速开发(八)通讯--Tcp服务器端
开源 C# 快速开发(九)通讯--Tcp客户端
开源 C# 快速开发(十)通讯--http客户端
开源 C# 快速开发(十一)线程
开源 C# 快速开发(十二)进程监控
开源 C# 快速开发(十三)进程--管道通讯
开源 C# 快速开发(十四)进程--内存映射
开源 C# 快速开发(十五)进程--windows消息
开源 C# 快速开发(十六)数据库--sqlserver增删改查
本章节主要内容是:QT中使用QML进行开发的有点和场景。
1.优点
2.场景
一、优点
QML开发的主要优点,可以分为几个方面:
1. 开发效率与易用性// 声明一个蓝色的矩形,里面有个居中的文本
-
Rectangle {width: 200height: 100color: "blue"Text {anchors.centerIn: parenttext: "Hello, World!"color: "white"} }
相比之下,用传统命令式代码实现同样的效果需要写更多行代码。
易于学习和上手: 对于有Web开发背景(尤其是HTML/CSS)的开发者来说,QML的语法和结构非常熟悉,学习曲线平缓。即使是新手,也能快速构建出漂亮的界面。
强大的集成开发环境: Qt Creator IDE为QML开发提供了极佳的支持,包括:
所见即所得的UI设计器: 可以直接拖放组件来设计界面。
实时预览: 修改QML代码后,可以几乎实时地看到界面变化,极大地提高了开发效率。
强大的调试工具: 可以调试QML和JavaScript代码,检查对象树和属性。
2. 性能与表现力
硬件加速的图形渲染: QML场景图默认使用OpenGL(或其他图形API,如Vulkan、Metal)进行渲染,能够充分利用GPU。这使得实现流畅的动画、复杂的视觉效果和60FPS的流畅界面成为可能。// 鼠标悬停时,矩形在0.2秒内变为红色
-
Rectangle {id: myRectwidth: 100; height: 100color: "green"Behavior on color {ColorAnimation { duration: 200 }}MouseArea {anchors.fill: parenthoverEnabled: trueonEntered: myRect.color = "red"onExited: myRect.color = "green"} }
原生般的性能: 当与C++后端结合时,QML应用既能拥有漂亮的界面,又能获得接近原生的性能。逻辑计算密集的任务可以用高效的C++完成,而UI展示和交互则由QML负责,做到了性能与美感的平衡。
3. 架构与可维护性
清晰的关注点分离: QML鼓励采用MVVM(Model-View-ViewModel)或类似MVC的架构。QML负责View(视图),C++负责Model(模型)和复杂的业务逻辑。这种分离使得代码更清晰、更易于测试和维护。// MyButton.qml
-
Rectangle {id: root// 定义自定义属性property alias text: label.textsignal clicked// ... 按钮的样式和交互逻辑Text { id: label; anchors.centerIn: parent }MouseArea { onClicked: root.clicked() } }
// 在别处使用自定义按钮 MyButton {text: "Click Me"onClicked: console.log("Button clicked!") }
4. 跨平台能力
“一次编写,到处部署”: 作为Qt的一部分,QML继承了其强大的跨平台能力。同一套QML UI代码,只需少量或无需修改,就可以编译和运行在:
桌面平台: Windows, Linux, macOS
移动平台: Android, iOS
嵌入式设备: 各种嵌入式Linux系统、QNX、INTEGRITY等。
车机系统: Qt for Automotive
微控制器: 通过Qt for MCUs,可以在资源受限的设备上运行QML。
5. 强大的后端集成// C++ 后端
-
class Backend : public QObject {Q_OBJECTQ_PROPERTY(QString data READ data NOTIFY dataChanged) public:// ... signals:void dataChanged(); };
// 注册到QML引擎 engine.rootContext()->setContextProperty("backend", new Backend);
// QML 前端 Text { text: backend.data } // 直接绑定C++属性
二、场景
QML开发的主要用途:
1. 桌面应用程序
跨平台桌面应用
办公软件:文档编辑器、邮件客户端、日历应用
多媒体应用:音乐播放器、视频播放器、图片查看器
工具软件:系统监控工具、文件管理器、开发工具
示例:WPS Office、VirtualBox管理界面、各种跨平台工具
2. 移动应用程序
Android和iOS应用
社交应用:聊天软件、社交媒体客户端
工具应用:计算器、笔记应用、天气预报
企业应用:内部管理系统、数据展示应用
示例:VLC移动版、一些企业的内部移动应用
3. 嵌入式系统和工业应用
汽车行业
车载信息娱乐系统(IVI)
数字仪表盘
中控台界面
抬头显示(HUD)
示例:宝马、奥迪、特斯拉等车载系统(部分版本)
工业控制
人机界面(HMI)
监控系统
控制面板
数据采集与监视控制(SCADA)系统
医疗设备
医疗仪器界面
病人监护系统
诊断设备显示
4. 消费电子产品
智能家居
智能电视界面
智能音响控制面板
家庭自动化系统界面
路由器管理界面
物联网设备
智能手表界面
智能家电控制面板
工业物联网网关界面
5. 专业设备和仪器
科研仪器
实验室设备控制界面
测量仪器显示
科学数据可视化
音视频设备
音频混音器界面
视频编辑软件
广播设备控制面板
6. 信息显示系统
数字标牌
广告播放器
信息查询终端
机场/车站信息显示屏
控制中心
指挥控制中心大屏
安防监控系统
数据中心监控
7. 游戏和娱乐
游戏开发
2D游戏界面
游戏菜单系统
游戏工具编辑器
娱乐系统
卡拉OK点唱界面
游艺设备控制界面
虚拟现实应用界面
8. 原型设计和概念验证
快速原型
UI/UX设计验证
产品概念演示
客户需求确认