Qt Quick优点
1.在以往项目的开发过程当中,对于PC端 UI的需求,咱们使用QWidget彻底可以在主流桌面操做系统上实现跨平台的开发工做;可是当遇到可触碰交互的用户界面,并要求在除了主流桌面操做系统,在移动操做系统上也要实现可观的产品时,Qt Quick的适配性更好
2.同时使用C++与Qt标记性语言QML,若是你已经熟悉了这套开发流程,你会发现这种相较于原有QWidget的开发,这种开发对View模块的隔离更加完全,后端应用逻辑使用C++,QML开发用户界面,并有MVD模式可使用,大大提升开发效率
3.Qt Quick默认使用OpenGL ES,渲染效率很高,而且提供了属性动画等基本动画对象以及用于组合多个动画对象的分组动画对象,在实现有关动画方面的需求,会更加方便
在原有QWiget项目中嵌入Qt Quick
若是当前的需求仅仅是要开发一个新的产品或者一个全新的模块,建议直接选择Qt Quick;可是在实际的业务场景里,咱们每每会遇到,因为QWidget完成的项目业务积累足够庞大,致使部分需求的开发使用Quick开发成本太高,因此下面我会根据实际的业务开发场景给出两个技术方案供选择。
方案1.业务不是很独立,是原有业务的一部分,而且依赖QWidget的组件,以及QWidget的属性,使用QQuickWidget
了解
QQuickWidget,打开Qt帮助文档经过索引搜索QQuickWidget,会看到很是详细的官方解释:The
QQuickWidget class provides a widget for displaying a Qt Quick user interface。也就是说咱们在可以兼容全部的QWidget属性以及与原有QWidget组件进行无差异衔接的同时,可使用QML进行界面的编写。可是必定要打开更多来观看更详细的Detailed Description,由于这里会有几个关键Note,告诉咱们对原有QWidget业务进行无缝衔接的同时,使用QML要付出的代价。
Note1:QQuickWidget的灵活,是以牺牲性能为代价的。与QQuickWindow和QQuickView不一样,QQuickWidget涉及渲染到render到OOpenGL帧缓冲区对象,这个会带来轻微的性能损失(这里能够埋个坑,后续一块儿讨论QQuick的渲染机制)
Note2:QQuickWidget将禁用全部平台上的线程render loop,例如Animator类和vsync驱动的动画不能使用
Note3:避免在QQuickWidget上调用winId()。这个函数会触发本机窗口的建立,致使性能下降,并可能出现渲染问题。
因此在使用QQuickWidget的灵活性的同时,要谨记以上三个Note
方案2.全新的项目或者很是独立的业务,使用QQuickView,将会使用原汁原味的QML与C++进行混合开发
了解QQuickView,一样打开Qt帮助文档经过索引搜索QQuickWidget(不管了解什么,先去Qt帮助文档查询)The
QQuickView class provides a window for displaying a Qt Quick user interface.点击更多查看详细信息。QQuickView是QQuickWindow的派生类,当给定主源文件的URL时候,会自动加载显示QML场景。
总结:不管是QQuickWidget仍是QQuickVIew,在编码过程当中的使用大同小异,经过代码编写发现问题,解决问题。
参考资料
【1】QmlBook-In-Chinese 第二章 Get Start
【2】Qt Quick核心编程 第一章 Qt Quick 概览
【3】Qt Quick核心编程 第四章 Qt Quick 入门
【4】Qt Assistant QQuickWidget,QQuickView