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六:切换开关操作
以下实例中,通过切换不同开关 checked 显示不同的值,true 为打开,false 为关闭. HTML 代码 <ion-header-bar class="bar-positiv ...
- Ionic入门十:icon(图标)
ionic 也默认提供了许多的图标,大概有500多个.用法也非常的简单: <i class="icon ion-star"></i> 图标列表如下:   ...
- linux下svn命令的使用
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- idea在debug模式启动非常慢,日志正常debug模式一直在启动中状态
背景 最近在使用idea开发工具时遇到了一个奇怪的现象,使用run tomcat项目可以正常启动,但是使用debug模式启动时,控制台可以正常打印日志,但是进度十分缓慢,也没有任何报出任何错误信息.只 ...
- JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- python 与 mongodb的交互
- 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]
请尊重原贴作者 与 本贴楼主.原作者把自己丰富的经验分享给了大家,本贴作者每个贴子平均花了3个小时翻译. 所以,转载请注明出处:原贴地址:http://www.tonymacx86.com/ ...
- Wireshark数据抓包教程之认识捕获分析数据包
Wireshark数据抓包教程之认识捕获分析数据包 认识Wireshark捕获数据包 当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了.Wiresh ...
- s3c2440地址分配
mini2440的地址怎么分配.mini2440处理器的地址怎么分配. S3C2440处理器可以使用的物理地址空间可以达到4GB,其中前1GB的地址为连接外设的地址空间.>1G的地址空间 分配给 ...
- BZOJ 3172 [Tjoi2013]单词 AC自动机Fail树
题目链接:[http://www.lydsy.com/JudgeOnline/problem.php?id=3172] 题意:给出一个文章的所有单词,然后找出每个单词在文章中出现的次数,单词用标点符号 ...