开源 C++ QT QML 开发(一)基本介绍

文章的目的为了记录使用QT QML开发学习的经历。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

相关链接:

推荐链接:

开源 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: 200
      height: 100
      color: "blue"
      
      Text {
          anchors.centerIn: parent
          text: "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: myRect
      width: 100; height: 100
      color: "green"
      
      Behavior on color {
          ColorAnimation { duration: 200 }
      }
      
      MouseArea {
          anchors.fill: parent
          hoverEnabled: true
          onEntered: 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.text
      signal 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_OBJECT
      Q_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设计验证

  • 产品概念演示

  • 客户需求确认

相关推荐
maosheng11463 小时前
RHCSA的第一次作业
linux·运维·服务器
NocoBase4 小时前
【2.0 教程】第 1 章:认识 NocoBase ,5 分钟跑起来
数据库·人工智能·开源·github·无代码
wifi chicken4 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
NocoBase4 小时前
开源项目管理工具选型指南(2026年最新)
人工智能·开源·无代码
旺仔.2914 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C4 小时前
CPU Cache
linux·cache
Hoshino.415 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
播播资源7 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry7 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
老星*7 小时前
Cal.com:开源日程预约管理平台,Calendly的最佳替代方案
开源