1、将QtWidgets移植到QtQuick的桥梁Qt Group中国资深解决方案工程师马立雪27 October 20252两大框架两大框架Qt WidgetsQt QuickC+技术:传统的桌面软件和嵌入技术:传统的桌面软件和嵌入式软件的开发方式。可定制化的式软件的开发方式。可定制化的UI控件。最高的性能、鼠标键盘控件。最高的性能、鼠标键盘操作、静态画面。适用于某些简操作、静态画面。适用于某些简单的嵌入式单的嵌入式UI。Qt Quick技术:描述性技术:描述性UI设计语言设计语言(QML)作为前端,)作为前端,C+作为后作为后端。适用于基于触摸操作的界面端。适用于基于触摸操作的界面的开发,轻松
2、实现优美、现代的的开发,轻松实现优美、现代的界面。默认使用界面。默认使用GPU进行图形渲染。进行图形渲染。27 October 20253基本基本使用使用-QtWidgets27 October 20254基本基本使用使用-QtQuick27 October 20255基本对比基本对比27 October 20256控制流对比控制流对比1234用户操作用户操作事件事件事件处理事件处理状态更新状态更新重绘重绘1234用户操作用户操作属性绑定属性绑定自动通知自动通知UI更新更新27 October 20257数据流对比数据流对比1234123427 October 20258同步同步-QtWidg
3、ets27 October 20259异步异步-QtQuick27 October 202510同步与异步同步与异步27 October 202511渲染模式渲染模式从CPU到GPU:充分利用现代硬件从全量到增量:只处理变化部分从同步到异步:渲染线程并行处理从手动到自动:框架自动优化27 October 202512差异总结差异总结Qt Widgets(MVC)Qt Qucik(MVVM)紧耦合View和Controller紧密耦合难以独立测试命令式代码大量样板代码手动状态管理易出错、难维护性能瓶颈每帧访问Model立即模式绘制CPU密集移动设备不友好触摸交互复杂动画效果困难电池消耗大松耦合V
4、iewModel解耦独立的View逻辑易于测试和复用声明式编程QML声明式语法属性绑定自动化代码简洁清晰高性能渲染Scene Graph缓存保留模式渲染GPU加速现代UI优化触摸手势原生支持流畅动画系统低功耗设计27 October 202513QtQuick其他其他-XML Model27 October 202514QtQuick其他其他-ObjectModel27 October 202515QtQuick其他其他-Integers as Model27 October 202516QtQuick其他其他-Object instances as Model27 October 20251
5、7QtQuick其他其他-Repeaters27 October 202518QtQuick其他其他-C+Data Model27 October 202519官方示例:官方示例:LightningViewer遵循经典的遵循经典的MVC(Model-View-Controller)架构模式架构模式使用使用Qt Quick/QML实现实现UIC+实现核心业务逻辑实现核心业务逻辑27 October 202520官方示例:官方示例:LightningViewerModel Layer(模型层)(模型层)-LightningItemData:闪电数据结构(时间戳、经纬度)-LastStrikeInf
6、o:最后一次闪电信息(距离、时间、方向)-LightningItemModel:QAbstractListModel实现,管理闪电数据列表-LightningProvider:WebSocket数据提供者Controller Layer(控制层)(控制层)-Controller:QML单例,协调Model和View 暴露Q_PROPERTY给QML 处理业务逻辑管理用户位置和图层状态View Layer(视图层(视图层-QML)-Main.qml:应用主窗口-Lightnin