QML APP开发套路(一):概述

(1)QML开发简介

  • Qt应用框架在传统UI(QWidget窗体)的基础上,提供了Qt Quick模块,该模块基于 QML 语言来定义UI及交互方式。
  • 区别于 QWidget 定义UI的方式,QML利于将UI交互业务逻辑处理剥离成前后端:前端即 QML UI,后端即 C++对象
  • UI交互与业务逻辑的连接纽带是业务对象(biz object)
  • 一个QML UI界面既包含可见部分,还包含不可见部分,即业务对象
  • 通过调用业务对象所暴露的方法/槽将数据(参数)从前端推送到后端,后端进行数据准备,再通过发射信号将状态反馈给前端
  • 类比MVC(Model-View-Controller)模型,QML UI即View,业务对象即Controller,而C++业务属于Model层面(定义数据Model,准备数据)

(2)开发环境

推荐QT 5.15 及 6.5 LTS 版本(因为QML还在不断更新,新版本新特性)。

(3)套路

按后端(Backend)和前端(Frontend)分为两个部分。
后端的开发者依旧是QT C++软件工程师,而前端的开发者则替换成UI设计师 和 QML界面设计师。

(3.1)后端(Backend)
(3.1.1)定义业务对象

  QML后端主要的工作是定义业务对象(用于衔接已有的C++代码):
(1)业务对象必须继承 QObject(包含 QObject 头文件和 Q_OBJECT 宏)
(2)使用 Q_INVOKABLE 暴露公共方法 或 使用 public slots 定义槽供前端调用
(3)定义信号供QML中实例化的业务对象回调,形如:usernameChanged、recordUidChanged
初始化

(3.1.2)初始化

  和所有C++ APP一样,在应用入口main执行初始化:
(1)注册业务对象(qmlRegisterType)
(2)添加插件导入路径(addImportPath),扫描插件(可选
(3)添加图像加载器(addImageProvider)(可选
(4)加载根UI(例如:main.mql)

(3.2)前端(Frontend)
(3.2.1)定义业务界面

(1)使用QML进行界面定义,其中包括引入业务对象并实例化
(2)界面初始化完成后,调用业务对象的方法(reqXxx)请求数据(可选)
(3)在控件交互中(例如:onClicked、onCheckStateChanged、onAccepted)调用业务对象的方法(setter)设置属性值或请求数据(reqXxx)
(4)定义业务对象的信号回调函数(例如:onEndoscopyListChanged),其中调用业务对象的方法(getter)获取属性值(数据),解析数据并更新UI

(3.2.2)其他

(1)界面切换与上下文承接
(2)插件的定义、发布、应用

(4)结尾

本文所介绍的套路,也是笔者的开发笔记。或粗或细,还需实际操演。
但是,演练之前要知道是什么,有什么,怎么玩儿。希望本文有所帮助。
【END】

你可能感兴趣的:(桌面开发,开发套路,QML,qt,c++,ui)