Qt Quick 和qml介绍
很多人不了解Qt Quick和Qml,还有很多人对其存在偏见。这篇文章就是来向这些有困惑的人介绍一下其是什么,有什么特点。
首先,这两个是一个东西吗?
答案:是的。但是,具体来说,Qt Quick是框架,qml是语言。Qt Quick是用C++搭建起来的一套DirectUI/Immediate UI框架,在这个框架上可以用和js语法一样的qml语言开发界面。
和原来的QWidgets框架有什么关系吗?
答案是没有。这个估计让很多人失望,我一开始也是以为Qt Quick就是QWidgets的演进版,只不过用js替代了原有的ui.xml文件。实际上,Qt Quick是一个新框架,它仅仅继承了QT原有的元对象系统,也就带信号槽的对象系统,其他的理念都是新的。了解DirectUI的同学肯定知道DirectUI和经典的GUI库,如MFC、WTL的区别。DirectUI把所有控件都在一个主窗口的绘制事件里绘制,从硬件原理上说就是界面是统一刷新的,而不是根据事件选择部分区域刷新。这样的好处是这些控件容易协作变化,特别适合制作动态界面,例如控件拖拽、变形、变色、皮肤、透明、3D等等。
为什么要引入qml或者说javascript?
答案是提高开发效率。传统上native的UI开发普遍使用C++,C#,java或者Objective-C,基本上是一类语言,就是静态语言。但是近年来本地应用也有使用HTML5+js的趋势。这个趋势一是因为web技术让js的解析速度更快了,另一方面是硬件资源越来越丰富了。当然最关键的是google开源了其牛逼的js引擎。Node.js加上一个前端框架也可以开发本地应用了。而QT Quick的目的就是提供一套类似的但是集成程度更高的解决方案,Qt Quick内部集成了google V8引擎作为qml的解释器,摒弃了html,起而代之的是直接使用js作为UI的设计语言,qml的意思是Qt Markable Language。和Node.js类似,Qt Quick也提供了一系列js和C++交互的接口,便于js和C++通信。复杂逻辑、文件系统、网络通信、传感器(像摄像头)的操作都可以在C++侧完成。而界面设计和一些简单逻辑(例如按钮变色、换肤、变形等)都可以在js侧完成。这样避免了传统上本地应用开发前端设计和后台逻辑混合的情况,让界面设计者专心设计界面成为了可能。由于C++提供了内存的快速操作方法(也可以使用js的Typed Array),这种方案的开发效率更高、运行速度还不慢。
只有移动端适合用Qt Quick吗
答案是否定的。我自己就是使用Qt Quick开发桌面应用的,而且很重型,还是实时的。Qt Quick适合桌面的开发,不仅仅是因为Qt Quick提供了js和C++的交互接口,而且是因为越来越多的桌面应用需要动态界面,有的还是3D界面。如前文所说,Qt Quick的优点就在于它是DirectUI,其构造界面的机制充分考虑了控件实时动态变化的情形,所以只要是应用是动态界面,那么Qt Quick就是适合的,例如仿真系统、监控系统、游戏等等。那么,有什么应用是不适合的吗,当然,如果界面中有大量静态控件,例如邮箱,表格或者像Ps这样按钮特别多的复杂界面就是静态界面,界面中有大片的区域不需要刷新,那么就不适合用Qt Quick,因为全局刷新会消耗更多CPU和内存资源。
--------------------- 作者:Tumiz 来源:CSDN 原文:https://blog.csdn.net/tumiz/article/details/53445196?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
Qt Quick 和qml介绍的更多相关文章
- 【Qt】Qt Quick 之 QML 与 C++ 混合编程详解
Qt Quick 之 QML 与 C++ 混合编程详解 - CSDN博客 专栏:Qt Quick简明教程 - CSDN博客 .
- qt quick中qml编程语言
Qt QML 入门 — 使用C++定义QML类型 发表于 2013 年 3 月 11 日 注册C++类 注册可实例化的类型 注册不实例化的QML类型 附带属性 注册C++类 注册可实例化的类型 如 ...
- Qt Quick 之 QML 与 C++ 混合编程具体解释
Qt Quick 技术的引入.使得你能够高速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的.也有非常多局限性,原来 Qt 的一些技术,比方低阶的网络编程如 QTcpSocke ...
- Qt Quick 与 QML语言(初学笔记1)
Qt Quick Qt Quick是一些新的UI技术的集合,用来帮助开发者创建一种现在越来越多用于手机.多媒体播放器.机顶盒以及其他便携式设备上的直观的.现代的.流畅的用户界面.简单来说,Qt Qui ...
- qml(Qt Quick)做界面
qml(Qt Quick)做界面 来源 https://www.zhihu.com/question/24880681/answer/29324824 本人是Qt初学者,正在写一个会计小软件(Lin ...
- Qt Widgets、QML、Qt Quick的区别
Qt Widgets.QML.Qt Quick的区别 简述 看了之前关于 QML 的一些介绍,很多人难免会有一些疑惑: Q1:QML 和 Qt Quick 之间有什么区别? Q2:QtQuick 1. ...
- Qt Quick实现的涂鸦程序
之前一直以为 Qt Quick 里 Canvas 才干够自绘.后来发觉不是,原来还有好几种方式都能够画图! 能够使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染).能够构造QSGN ...
- Qt Quick实现的疯狂算数游戏
使用 Qt Quick 写了个小游戏:疯狂算数.支持 Windows 和 Android 两个平台. 游戏简单,但牵涉到下面你的 Qt Quick 主题: 自己实现一个按钮 自适应分辨率 国际化 QM ...
- Qt on Android: Qt Quick 之 Hello World 图文具体解释
在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式開始撰写 Qt Quick 程序,而那 ...
随机推荐
- Ionic Js七:手势事件
1.on-hold 长按的时间是500毫秒. HTML 代码 <button on-hold="onHold()" class="button">长 ...
- Python 笔记(一)字典与json使用及注意点
个人笔记系列,随便参考 1.python 中字典与json的差别 字典的生成 >>> a = dict(one=1, two=2, three=3) >>> b = ...
- JQuery重定向
window.location.href = "这里写页面的路径"; 如:window.location.href ="www.baidu.com";
- GPS数据包格式及数据包解析
GPS数据包解析 GPS数据包解析 目的 GPS数据类型及格式 数据格式 数据解释 解析代码 结构体定义 GPRMC解析函数 GPGGA解析函数 测试样例输出 gps数据包格式 gps数据解析 车联网 ...
- python-arcade时钟
最近开始学习arcade的图形库,感觉功能很丰富,尝试画了个时钟,显示如下: 贴上调整好的代码: import arcade import math,time SCREEN_WIDTH = 800 S ...
- leetcode x 的平方根 python
x 的平方根 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...
- NandFlash_control
驱动:编写任何设备的驱动程序,都需要对该设备的原理有一定了解和认识.对于外部设备的访问总是需要通过一个控制器来间接访问,对于这个控制器的控制程序称为驱动程序 Nandflash 原理: 一:角色分析 ...
- OpenGL ES 3.0 帧缓冲区对象基础知识
最近在帧缓冲区对象这里卡了一下,不过前面已经了解了相关的OpenGL ES的知识,现在再去了解就感觉轻松多了.现在就进行总结. 基础知识 我们知道,在应用程序调用任何的OpenGL ES命令之前,需要 ...
- ROS知识(20)----使用Master_API查询Master管理的节点话题服务内容
在一些应用中会需要获取master的uri地址,发布的话题,订阅的话题,发布的服务,节点的信息等等.这些功能我们通常可一通过rosnode list, rosnode info, rostopic l ...
- python知识(3)----正则表达式
python的正则表达式使用起来非常的方便,基本思路就是编译规则,匹配字符串,输出字符串 参考资料 Python中的正则表达式教程