完整教程:开源 C++ QT QML 开发(一)基本介绍

news/2025/10/20 21:00:32/文章来源:https://www.cnblogs.com/yxysuanfa/p/19153642

          文章的目的为了记录使用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设计验证

  • 产品概念演示

  • 客户需求确认

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

102302104刘璇综合实践作业任务一:智能购物平台用户需求调研分析报告——基于195份问卷的用户痛点挖掘

摘要: 本报告基于《智能购物平台调查问卷数据及其可视化》收集的195份有效数据,通过科学的可视化分析方法,围绕用户基础特征、烹饪行为习惯、智能功能需求等维度展开深入研究。在两个星期的调研过程中,我从问卷设计…

软件工程第二次团队作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559这个作业的目标 使用现代 A…

Hands on Deep Learning Chapter 3 线性神经网络

3 线性神经网络 3.1 线性回归 回归(regression)、预测(prediction)、分类(classification) 3.1.1 线性回归的基本元素 线性模型:对输入特征进行一个仿射变换(affine transformation,加权和对特征进行线性变换…

超越技术范畴:低代码如何重塑企业数字文化

当我们谈论低代码时,目光往往聚焦于其提升开发效率的技术特性。然而,它的深层影响力远不止于此。低代码更像是一颗投入企业静湖的石子,其激起的涟漪,正层层扩散,深刻地重塑着组织的协作模式、创新节奏乃至内在的数…

好用的网址

填验证码(? 题解格式化。 画图。 代码格式化。 纯文字图片生成器。

【C++实战(71)】解锁C++音视频编写:FFmpeg从入门到实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20251020

正睿NOIP 二十连测 A 有 \(m(m \le 95)\) 种药剂,每种药剂有 \(n_i(\sum n_i \le 10^{15})\) 瓶,等级为 \(p_i\)(\(2 \le p_i \le 499\))。要将这些药剂分成两个不相交的集合 \(X, Y\),\(X\) 的价值为其组内所有药…

低代码赋能业务创新:打破数字鸿沟,释放业务潜能

在数字化转型的浪潮中,一个突出的矛盾日益显现:业务部门汹涌的创新需求,与IT部门有限的开发资源之间,形成了一道难以逾越的“数字鸿沟”。当市场部门需要一个临时的活动报名系统,当HR部门渴望一个高效的内部推荐工…

【大模型】大模型训练的几个不同阶段

总结:各方法的典型关联(以大语言模型为例)Pre-Training:先让模型学“通识知识”(如语言、世界知识)。 Supervised Fine-Tuning (SFT):用标注数据让模型学“任务基本模式”(如指令遵循)。 Reward Modeling:训…

详细介绍:1、手把手教你入门设计半桥LLC开关电源设计,LLC谐振腔器件计算

详细介绍:1、手把手教你入门设计半桥LLC开关电源设计,LLC谐振腔器件计算pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

十六天

今日重点学习关系型数据库基础,核心掌握三个模块:一是数据表的结构化设计,明确字段类型(如INT、VARCHAR)需与数据属性匹配,避免后续数据存储异常;二是主键的作用,通过实操验证其“唯一标识记录”的必要性——未…

10/20/2025杂题 关于在线性时间内求解低次多项式的幂

例 设 \(g = ax^2 + bx + c\),求: \[ f = g^n\]其中 \(0 \leq n \leq 3 \times 10^5\)。结果对 \(10^9 + 7\) 取模。 首先可以直接用 MTT 在 \(O(n \log n)\) 的时间复杂度内求解。然而此做法常数太大,在需要多次求…

歌手与模特儿

https://www.luogu.com.cn/problem/AT_nikkei2019_2_final_h 第一次见到能 manacher 但不能二分+哈希的题! 直接上 manacher,当尝试将区间拓展为 \([l,r]\) 时,考察 \(nxt_l\) 和 \(lst_r\) 的位置关系,可以 check…

20251019

正睿 NOIP 十连测 B 有 \(n\) 个数 \(a_1 \sim a_n\)。初始有一个 \(x = 1\),每次需要将 \(x\) 变为某个 \(i\),花费代价为 \(\min(|i - x|, n - |i - x|)\),且 \(a_x \le a_i\)。问访问所有 \(i\) 需花费的最小代价…

计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与建立 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】

计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与建立 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】pre { white-space: pre !important; word-wrap: normal !important; overflo…

SpringBoot整合Redis教程

一、Redis 简介 Redis(Remote Dictionary Server)是一个开源的高性能键值对存储数据库,基于内存运行并支持持久化,常用于缓存、会话存储、消息队列等场景。其核心特点包括:速度快:基于内存操作,单线程模型避免上…

https://www.luogu.com.cn/problem/CF1635E

考虑一个事情,两辆车方向一定相反,弱化限制后,建二元关系图,发现一定是一张二分图。 钦定左部点为向左,其他点为向右,然后发现位置满足一个二元大小关系限制,建 DAG 跑拓扑序即可。

ZR 2025 NOIP 二十连测 Day 5

85 + 32 + 5 + 5 = 127, Rank 67/128.呜呜我错了……我再也不开太大的 vector 了呜呜……/dk /dk /dk25noip二十连测day5 链接:link 题解:题目内 时间:4h (2025.10.20 14:00~18:00) 题目数:4 难度:A B C D\(\colo…

关于单片机内部ADC采样率,采样精度的理解与计算整理 - 实践

关于单片机内部ADC采样率,采样精度的理解与计算整理 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

整体架构与数据流

下面给出对题目及当前代码求解方法的系统、深入解析,涵盖三问建模逻辑、数据流、关键算法、假设与局限、以及改进建议。内容按“题目需求 -> 代码实现 -> 差异/假设 -> 评估/改进”结构展开,方便你写论文或…