使用Qt进行软件开发,第一个要考虑的问题就是为需要开发的软件,选择一个合适的Qt项目类型。
Qt中的项目类型有:
Application: “应用”项目,项目编译结果是可执行程序。
Library: “库”项目, 项目编译结果是静态库或动态库。
其他项目: 辅助类项目。
Non-Qt Project: “非Qt应用”项目。
在软件开发实践中,主要用来的是Application,Library以及其他项目中的“子目录”类型项目。
一、Application项目
“Application”项目,分为三类:桌面应用类的Qt Widgets Application, Qt Console Application;
使用Python语言进行开发的Qt for Python - Empty,Qt for Python - Window;以及基于QML语言进行UI设计的Qt Quick Application。
2.1、Qt Widgets Application
Qt QWidgets是Qt 提供的一些开箱既见、所见即所得看起来就像Windows等桌面平台的原生控件(在移动平台,如Andriod 和 IOS 上,没有对应原生风格的小组件),并且非常依赖主流语言(C++或Python等)API的一种界面开发框架,类似VS 的MFC。
Qt QWidgets 通常不用来做动画效果。虽然我们可以通过编写代码实现复杂的动画,但是编码过程往往会非常的难,非常的复杂。即便我们强行实现了要求的动画效果,也不一定是我们想要的或者非常流畅的UI动画,有时候动画伴随的是复杂的计算,CPU的飙升,带来的往往会不同程度的卡顿。
如果项目是只运行在PC端,选用Qt Widgets Application类型项目是合适的。
2.2 Qt Quick Application
QML(Qt Meta-Object Language,Qt元对象语言)是一种用于描述应用程序用户界面的声明式编程语言。Qt Quick是一个编写QML应用的标准库,Qt Quick 通常使用基于JS的 QML 来编写代码,用基于C++ 或者Python 的代码来帮助通讯,例如连接到后端。
Qt Quick模块提供了两种接口:
- 使用QML语言创建应用的QML接口;
- 使用C++语言扩展QML的C++接口。
使用Qt Quick模块,设计人员和开发人员可以轻松地构建流畅的动态式QML用户界面,并且在需要的时候,可以将这些用户界面连接到任何C++后端。
Qt Quick 可以在所有平台上使用,并使用原生图形后端进行渲染,比如Metal 或者 Mac OS, 我们也可以在自己为Qt Quick编写的项目中,直接使用原生图形系统进行渲染,对硬件资源利用率更高。使用 Qt Quick可以更容易的实现流畅的用户界面,以及复杂的动画效果。通过现有的控件或基本的Qt Quick 类型,我们也可以定制或者编写自己想要的控件。
Qt Quick可以开发PC端和移动端应用。
对PC端应用:
如果只需要一个简单的UI,对动画效果要求不高的话,使用Qt QWidget 它有很多现成的组件可以使用,根据需求进行拼装即可,无需太多操作。
如果需要炫酷的界面,更加流畅的动画,使用Qt Quick。
如果需要跨平台(Linux,MacOS,Windows),使用Qt Quick。
移动端应用:只有选择Qt Quick。
二、Library项目
“Library”类型项目,最多使用的是C++ Library(静态库、动态库)。
需要注意的是Qt module的选择。
None: 项目不使用Qt的任何模块。
Core:项目使用Qt的Core模块,不涉及任何GUI。
GUI: 项目使用Qt的Gui模块。
Widgets:项目使用Qt的Widgets模块。
其他项目-子目录项目
如果项目比较大型、复杂,一般会把项目分解成多个子项目来进行管理。“子目录项目”是Qt用来管理大型项目开发的一类项目类型。
“子目录项目”下面可以添加其他类型项目,包括“子目录项目”,从而形成一颗项目树。顶层“子目录项目”与VS的Solution(解决方案)等价。