提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
我们都知道,我们网校的大部分PC客户端软件都是采用基于Qt的应用程序开发框架来实现的。其中,对于客户端软件,全部或部分使用Qt Widgets控件进行界面开发展示。所以,现在几乎所有的PC端开发伙伴都知道Qt QWidgets是什么,对基于Qt QWidgets 开发界面程序的流程也都熟稔于心。
但是从Qt 4.7开始,引入了Qt Quick技术,在Qt 5之前,Qt Quick 作为一个新兴的技术,加上当时有各种不完善,所以并没有成为主流的开发框架。但随着 Qt5 的到来,Qt Quick 也进行了很多优化和改进,也发布了Qt Quick 2.0。越来越多的项目也开始选择 Qt Quick 作为开发首选项,而不是Qt QWidgets。
现在很多Qt的初学者、熟练使用Qt QWidgets开发老师甚至有使用Qt Quick 开发经验的老师,对于Qt Quick到底是什么,和 Qt QWidgets有什么区别?对于新学者应该学习哪一种?项目中应该选用Qt QWidgets 还是 Qt Quick 这些问题,一时也分的不是特别清楚,也讲得不是特别明白。
提示:以下是本篇
今天我们就一起探讨一下上面那些问题,重点弄清楚两个问题:
1. Qt QWidgets 和 Qt Quick 各自有什么特性、特点?
2. 开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?
为了弄清上面的问题,我们首先应该先了解Qt QWidgets 和 Qt Quick 各自都是什么?国际惯例,先上定义。我们先说一下 Qt Quick : 在官方文档里对它的描述是这样的:
一种高级用户界面技术,可以轻松创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。Qt Quick主要由一个改进的Qt Creator IDE(其中包含了Qt Quick设计器)、新增的简单易学的QML语言和新加入Qt库中名为QtDeclarative的模块等三部分组成。这些使得QML更方便不熟悉C++的开发人员和设计人员使用。
从这个定义来看,其实Qt Quick就是Qt引入的全新的界面编程方式的通称。在Qt 5中,Qt Quick被描述为QML类库:Qt Quick是QML的一个数据类型和功能的标准库,包含了可视化类型、交互类型、动画、模型和视图、粒子特效和渲染特效等。在QML应用程序中,可以通过一个简单的import语句来使用该模块提供的所有功能。
这里面又提到了 QML,那么什么是QML?
我们看一下官方对它的定义:
QML(Qt Meta-Object Language,Qt元对象语言)是一种用于描述应用程序用户界面的声明式编程语言。它使用一些可视组件,通过这些组件之间的交互来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且易于复用和自定义。QML允许开发者和设计者进行联合创作,快速创建高性能的、具有流畅的动画效果的、极具视觉吸引力的应用程序。QML提供了一个具有高可读性的类似 JSON 的声明式语法,并提供了必要的 JavaScript 语句和动态属性绑定的支持。
在Qt 5中,QML语言和引擎框架由Qt QML模块提供。
看完之后是不是还没有搞清楚 什么是 Qt Quick? 甚至更迷糊了呢?哈哈,定义总是那么的生涩且难以理解,不过如果是初学者,你可以把 QML 和 Qt Quick 的关系想象成C++ 和 Qt 的关系。 如果还不理解,没关系,往下看,等到我们把他们的特性也梳理完了,也许对你的帮助会比较大。
说完 Qt Quick 的定义之后,我们来说一下 Qt QWidgets 的定义又是什么呢?由于官方对它没有明确的定义,大家也没有形成一个明确的文字定义,但是有过Qt开发经验的人,应该都明白: Qt QWidgets 就是使用Qt 提供的一些开箱既见、所见即所得的一些基础控件,并且非常依赖主流语言(C++或Python等)API的一种界面开发框架。
好了,我们上面知道了 Qt QWidgets 和 Qt Quick 各自是什么,那么我们就可以进入第一个正题了,我们来讨论一下他们各自的功能,我们先从Qt QWidgets 开始:Qt QWidgets 和 Qt Quick 的特性,先总结一下Qt QWidgets:
二、开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?
通过上面的总结,我们知道了Qt QWidgets 和 Qt Quick 的各自特性之后,我们可以讨论第二个问题了 “开发一款软件的时候,我们应该选用Qt QWidgets 还是 Qt Quick 哪种技术?”
其实我们发现针对桌面系统软件开发的时候,用Qt QWidget 还是 Qt Quick, 其实是根据我们软件的需求来决定的。一般有一下几点建议:
到这里,我们就把今天重点讨论的两个问题说明白了,再总结一下,就是
1. Qt QWidgets 和 Qt Quick 都是跨平台的,相对而言,Qt QWidgets 是一种更老、更成熟的框架(方案),Qt Quick 则更新,更现代一些。
2. 想要快速简单的构建一个无需绚丽动画的传统桌面程序,优先使用Qt QWidgets。
3. 想要绚丽界面和动画,或者移动端程序、跨平台程序建议优先使用Qt Quick。
随着Qt Quick的持续发展,未来的桌面开发程序,会越来越多的使用Qt Quick 技术的,希望各位老师有空也能够多学习一下相关知识。