UI领域, 如果是桌面应用,QML可以更快速。如果是手机UI,H5绝对占优。

移动设备已经为各行业的HMI的响应性和用户友好性设定了标准。汽车,医疗设备,工业自动化系统和消费电子产品制造商现在希望为其嵌入式设备复制这种出色的用户体验。想找出我们应该选择哪种技术策略,其实我们完全可以做一个测试,一位开发人员被分配160小时,使用Qt和QML 创建嵌入式系统的演示应用程序,使用相同的小时数来创建使用HTML5的等效应用程序。


毕竟Qt提供的那一套控件库更适合桌面应用,而当年诺基亚都开发了塞班和米果的QML手机控件库,现在Ubuntu,旗鱼,黑莓都有自己的QML手机控件库。 



渲染性能上。QML有绝对统一的接口规范以及渲染机制。(跨平台是这样的)。 H5桌面系统一套,就谷歌做的好。手机WebKit嗯,但是系统对WebKit的支持也不能说表现一样。



接下来我来说说QML吧。 QML的执行引擎是基于Qt的V4引擎,V4最大的改变就是添加了类型。

添加了类型让QML的属性绑定相比于之前的版本(Qt4的QtQuick 1.x)有极其大的提升。 属性绑定(数据绑定,表达式绑定)。嗯,在QML中随处可见的属性绑定,虽然有H5中有类似数据绑定的JS库。但QML语法上就支持了。 


QML的渲染方式相较于之前的版本也有了重大的更新。 之前的版本(Qt4的QtQuick 1.x)更接近widget,虽然是Griphics/view,但是渲染更多是优先提交给cpu处理。当然,在N9(嗯,第一个完全使用QML构造应用的系统),会使用gpu,有硬件加速嘛。 



现在的QML渲染方式更倾向于优先使用显卡。(所以现在使用QML需要良好的显卡支持,例如正确安装显卡驱动)。

简单扯扯现在QML的渲染绘制机制吧。 



1. 基于事件的,基于Griphics/secen 

2. 有两个线程,一个绘制,一个渲染。

3. cpu负责绘制,gpu负责渲染。 

4. 当需要重绘时,绘制线程暂停,渲染线程进行渲染,渲染完毕,绘制线程启动,绘制。 



嗯,上面那个我是看Qt英文文档,自己理解的,叙述有出入。 此外,Qt正在开发的Qt3D,类比WebGL,其性能以及可部署性远大于H5的WebGL,嗯,是个重型武器。其实也反应出了QML渲染和绘制的效率。