认识 Qt
参考:
【1】《Qt6C++ 开发指南》
Qt 简介
很多刚接触 Qt 的开发者会认为 Qt 是一种编程语言,或者将 Qt 的集成开发环境(integrated development environment,IDE)Qt Creator 当作 Qt,这些理解是错误的。Qt 实质上是用 C++编写的大型类库,它为跨平台应用开发提供了一个完整的框架。Qt 框架包含大量的类,支持 GUI、数据库、网络、多媒体等各种应用的编程。本节概要介绍 Qt 的功能和特点,包括其跨平台开发能力、许可类型、支持的开发语言,以及 Qt 6 的新特性。
Qt 的跨平台开发能力
Qt 的一个最重要的特点是具备跨平台开发能力。我们可以使用 Qt 为计算机、移动设备、嵌入式设备、微控制单元(microcontroller unit,MCU,又称单片机)等目标设备开发程序。Qt 能用于如下一些设备和平台的应用开发。
- 桌面应用开发,支持的桌面操作系统包括Windows、Linux 和 macOS。
- 移动端应用开发,支持的移动操作系统包括 Android、iOS 和 Windows。
- 嵌入式设备的应用开发
- MCU 的应用开发,支持的嵌入式操作系统包括 QNX、嵌入式 Linux 和 VxWorks 等。这些嵌入式设备一般具有能力较强的处理器和丰富的存储器资源,例如轿车的全液晶仪表盘。
- 支持嵌入式实时操作系统 FreeRTOS 或无操作系统。MCU 的处理器能力较弱,存储器资源有限,各种MCU系统的硬件资源差异大,目前Qt只支持NXP、Renesas、ST、Infineon 等公司的部分型号单片机开发板,实际产品的开发需要深度定制。
对于嵌入设备开发时,需要使用交叉编译开发方式,因为嵌入式设备的资源有限。对于嵌入式开发将源程序使用指定目标平台的编译器编译代码,在将二进制文件下载到目标设备上运行。
在交叉编译开发方式中,计算机称为主机,主机包括 Windows、桌面 Linux、macOS 等不同的主机平台,Qt 提供了安装在这 3 种主机平台上的对应版本。不同的平台必须对应相应的平台才能运行该平台开发的Qt程序,如下表1-1。
Qt 的许可类型和安装包
Qt 的许可类型分为商业许可和开源许可,开源许可又分为 GPLv2/GPLv3 和 LGPLv3。各种许可协议的主要特点如下。
1、商业许可。商业许可需要付费,Qt 公司目前采用的是按年付费的方式。商业许可允许开发者不公开项目的源代码。商业许可的 Qt 安装包里有更多的模块,某些模块只有在商业许可的版本中才有。
2、开源许可。
- GPLv2/GPLv3 许可。若用户编写的程序使用了 GPL 许可的 Qt 代码,则用户程序也必须使用 GPL 许可,也就是用户代码必须开源,但是允许商业化销售。GPLv3 还要求用户公开相关硬件信息。
- LGPLv3 许可。若用户对使用 LGPL 许可的 Qt 代码进行修改后予以发布,则用户发布的代码必须遵循 LGPL 许可,也就是用户代码必须开源,但是允许商业化销售。若用户编写的程序只是以库的形式链接或调用了使用 LGPL 许可的 Qt 代码,则用户代码可以闭源,也可以商业化销售。
在开源许可协议中,LGPL 相对于 GPL 更宽松一些。若用户程序只是链接或调用 LGPL 许可协议的 Qt 代码,那么用户代码可以闭源;而用户程序只要用到了使用 GPL 许可协议的 Qt 代码,用户代码就必须开源。
Qt 的安装包、工具软件、开发框架中的不同模块都有各自的许可类型。若用户开发的代码可以开源,就可以放心使用 Qt 中各种开源许可的工具软件和模块;若用户不想公开自己的源代码,就不能使用 GPL 许可的 Qt 模块,使用 LGPL 许可的模块时要注意只能以库的形式链接或调用。根据开发目标的不同,Qt 提供了 3 种安装包。安装包具有针对不同主机平台的版本,而且采用了不同的许可协议。
- Qt for Application Development:用于为计算机和移动设备开发应用的开发套件安装包,有商业和开源两种许可协议,具有 Windows、Linux、macOS 主机平台版本。
- Qt for Device Creation:用于为嵌入式设备开发应用的开发套件安装包,只有商业许可协议,具有 Windows 和 Linux 主机平台版本。
- Qt for MCUs:用于为 MCU 开发 GUI 程序的开发套件安装包,只有商业许可协议,具有 Windows 和 Linux主机平台版本。
Qt 支持的开发语言
1、C++ 和 QML
Qt 类库本身是用 C++语言编写的,所以 Qt 支持的基本开发语言是 C++。Qt 还对标准 C++语言进行了扩展,引入了信号与槽、属性等机制,为跨平台和 GUI 程序的对象间通信提供了极大的方便。
Qt 还提供了一种自创的编程语言 QML,它是类似于 JavaScript 的声明性语言。Qt 提供了一个用QML编写的库Qt Quick,它类似于Qt C++类库,区别是Qt Quick中的各种控件被称为QML类型(type)。QML 用于描述程序的用户界面,将用户界面描述为对象树,每个对象具有自己的各种属性。
QML 适合为支持触摸屏操作的设备创建用户界面,这些设备如手机、嵌入式设备和 MCU。用 QML 创建的用户界面具有现代感很强的界面显示和操作效果。还可以混合使用 QML 和 C++编程,也就是用 QML 创建用户界面,用 C++处理后台业务逻辑。
Qt 的 3 种安装包都支持 QML,Qt for MCUs 目前不支持 C++,只支持 QML。因为 MCU 的资源有限,所以 Qt for MCUs 支持的是一个轻量化的 QML 控件库 Qt Quick Ultralite。使用 QML 为MCU 创建界面的代码会被转换为 C++代码,MCU 底层开发使用嵌入式 C/C++。
2、Python
Qt C++类库可以被转换为 Python 绑定,我们可以用 Python 语言编程调用 Qt 类库进行 GUI程序开发。Qt 类库的 Python 绑定版本比较多,比较常用的是 PyQt 和 PySide。
PyQt 是 Riverbank Computing 公司开发的 Qt 类库的 Python 绑定,它出现得比较早,更新比较及时,是目前应用比较广泛的 Qt 类库的 Python 绑定。PyQt5 是与 Qt 5 对应的版本,PyQt6 是与 Qt 6 对应的版本。PyQt5 和PyQt6 都采用商业许可和 GPLv3 开源许可。
PySide 采用商业许可和 LGPLv3 开源许可,相对于 PyQt 采用的 GPLv3 开源许可,LGPLv3开源许可对商业开发者更友好一些。
Qt 的安装
1、软件的下载:
从Qt 5.15 开始,Qt 开源版本只提供在线安装软件,没有离线安装软件。
链接: [https://download.qt.io/archive/online_installers/4.2/ ](Index of /archive/online_installers/4.2 (qt.io))
下载: qt-unified-windows-x86-4.2.0-online.exe 为例。
2、安装软件
在安装时可能会出现一个问题,就是下载不成功;因此需要选择国内镜像:
./qt-unified-windows-x86-4.2.0-online.exe --mirror https://mirrors.cloud.tencent.com/qt/
其他具体操作,百度。
3、配置环境变量
编写一个 Hello World 程序
Qt Creator 简介
Qt Creator 本身就是用 Qt 开发的,Windows 平台上的 Qt Creator 6.0.2 是基于 Qt 6.2.2,采用MSVC 2019 64位编译器编译的。点击Qt Creator菜单项Help→About Qt Creator可以查看Qt Creator使用的 Qt 开发套件信息。
Qt Creator 软件启动后的 Welcome 界面如图 1-8 所示,Qt Creator 的界面很简洁,上方是菜单栏,左侧是主工具栏,中间部分是工作区。主工具栏提供了项目文件编辑(Edit)、窗口界面设计(Design)、程序调试(Debug)、项目设置(Project)等功能按钮。根据左侧点击的工具栏的不同按钮,以及打开的不同文件,工作区会显示相应的工作界面。
下图是在左侧主工具栏点击 Welcome 按钮后显示的界面。工作区的左侧有 Projects、Examples、Tutorials、Get Started Now 几个按钮,点击某个按钮后会在工作区显示相应的内容。
- 点击 Projects 按钮,工作区会显示最近打开过的项目,以便快速选择项目。
- 点击 Examples 按钮,工作区会显示 Qt 自带的大量示例项目,点击某个项目就可以在 Qt Creator 中打开该项目源程序。
- 点击 Tutorials 按钮,工作区会显示各种教程。
- 点击 Get Started Now 按钮,工作区会切换到帮助界面,相当于在菜单栏上点击 Help 菜单项。
下面使关于Qt Creator 的配置信息:
- Kits 设置。Kits 就是安装的 Qt 开发套件,我们在安装过程中选择了 3 个开发套件,所以Qt Creator 能自动检测到安装的套件,并设置好关联的编译器和调试器。
- Environment 设置。在 Interface 界面可以设置语言和主题,本书全部以英文界面的 Qt Creator进行讲解,所以语言选择为 English,还将主题设置为 Flat Light。更改语言和主题后需要重新启动 Qt Creator 设置才会生效。
- Text Editor 设置。在对应界面可以设置文本编辑器的字体,设置各种类型文字的颜色,如关键字、数字、字符串、注释的颜色,也可以选择不同的配色主题。
- C++设置。在对应界面可以设置 C++代码样式,可以设置代码缩进方式和与按 Tab 键等效的空格数。
新建一个 GUI 项目
点击 Qt Creator 的菜单项 File→New File or Project,会出现图 1-10 所示的对话框。使用这个对话框可以创建多种类型的项目或文件。在对话框左侧的列表框中点击 Application(Qt),中间的列表框中会列出可以创建的项目类型。
- Qt Widgets Application。基于界面组件的应用,也就是具有窗口的 GUI 程序,项目编程使用 C++语言。本书将此类项目称为 GUI 项目或应用项目,本书示例基本上都是此类项目。
- Qt Console Application。控制台应用,没有 GUI。一般是在学习 C/C++语言基础语法,只需简单的输入输出操作时才创建此类项目。
- Qt Quick Application。基于 Qt Quick 的应用,需要使用 QML 编程。
在图所示的对话框中选择 Qt Widgets Application 后,点击 Choose 按钮,会出现下图所示的新建项目向导。
在上图中设置好项目名称和存储路径后,点击 Next 按钮,会出现下图所示的选择构建系统的界面。可以选择 qmake 或 CMake,默认是 qmake。
这里选择 qmake 后点击 Next 按钮进入下一步,会出现下图所示的界面,用于设置窗口类名称,选择窗口基类。GUI 项目需要创建一个窗口,在 Base class 下拉列表框中选择一个窗口基类,有 3 种窗口基类可供选择。
- QMainWindow 是主窗口类,主窗口类具有菜单栏、工具栏和状态栏。
- QWidget 是所有界面组件类的基类,QWidget 可以作为独立的窗口,就是一个空白的窗口。
- QDialog 是对话框类,窗口具有对话框的显示效果,例如没有最大化按钮。
下一步之后,选择Kit 开发套件,开发套件隐含了所用的编译器。
Next 按钮后进入总结界面,显示项目存储路径和将要创建的文件清单,还可以为项目设置版本控制工具。我们不考虑版本控制,因此到这里就完成了项目的创建。
项目的文件组成和管理
使用向导创建项目 samp1_1 之后,在 Qt Creator 的左侧工具栏上点击 Edit 按钮,会显示图 1-15所示的界面。界面左侧有上下两个子窗口,上方的目录树显示了项目内文件的组织结构,目录树的顶层节点是项目名称节点 samp1_1。Qt Creator 可以打开多个项目,但是其中只有一个活动项目(active project),活动项目的项目名称节点的文字用粗体。在项目名称节点下面是项目内文件分组和各种源文件。
- samp1_1.pro 文件。这是使用 qmake 构建系统时的项目配置文件,包括关于项目的各种设置内容。
- Headers 分组。该节点下是项目内的 C++头文件(.h 文件),该项目有一个头文件 widget.h,它是窗口类的头文件。
- Sources 分组。该节点下是项目内的 C++源程序文件(.cpp 文件),该项目有两个 C++源程序文件:widget.cpp 是窗口类的程序文件,与 widget.h 文件对应;main.cpp 是包含 main()函数的文件。
- Forms 分组。该节点下是项目内的窗体文件(.ui 文件),也称为用户界面(user interface,UI)文件。该项目有一个 UI 文件 widget.ui
在Qt Creator 中内置的 Qt Designer,用于对 UI 文件进行界面可视化设计。窗口左侧是组件面板,具有多个分组的用于设计界面的组件。窗口中间是待设计的窗体,也就是文件 widget.ui 的显示效果。窗口右侧上方是对象检查器(Object Inspector),显示了窗体上所有组件的层次结构。窗口右侧下方是属性编辑器(Property Editor),在设计窗体上点击一个组件后,在属性编辑器里就可以显示和修改其属性。
从组件面板的 Display Widgets 分组里,将一个 Label(标签)拖放到设计的窗体上面。双击刚刚放置的标签,可以编辑其显示文字,将文字内容修改为“Hello World”。在属性编辑器里修改标签的 font 属性,将 Point Size 设置为 15,勾选 Bold 复选框。
项目的构建、调试与运行
点击主窗口左侧工具栏上的 Projects 按钮,会切换到下图所示的 Projects 设置界面。
界面左侧一栏的 Build & Run 下面显示了所有开发套件,点击某个套件其就会变为粗体字显示,表示这是当前使用的开发套件。开发套件有快捷菜单,可以为项目启用或禁用某个开发套件。
每个开发套件又有 Build 和 Run 两个设置界面。在 Build 设置界面上,有一个 Shadow build复选框(见上图 )。如果勾选此复选框,构建项目后将在项目的同级目录下创建一个输出文件夹,文件夹名称包含套件和构建模式信息。如果不勾选此复选框,构建后 Qt Creator 将在项目的目录下创建文件夹 debug 和 release 用于存放输出文件。对于一般的示例项目不需要勾选 Shadow build复选框,只有在需要输出多种构建版本的输出文件时才勾选此复选框。对于项目的 Build 和 Run设置界面的其他选项都采用默认设置即可。
设计好 UI 文件 widget.ui 的可视化界面,并设置好开发套件之后,就可以对项目进行构建、调试或运行。主窗口左侧工具栏下方有 4 个工具按钮,其功能如表 1-2 所示。
在运行程序时会出现的问题
1、无法找到入口
是因为Qt 打包发布exe 缺少或者加载错误的 Qt libstdc++-6.dll 报错。
解决方案:
1、手动赋值一个libstdc++-6.dll 到samp1_1.exe 目录下。
2、通过windeployqt.exe 创建应用程序发布包,会将一系列库文件等加载到指定目录。如下图在Project 中 Build Setting 中的 Build Steps 中添加一步,可以解决上面问题。
标签:Qt,Creator,项目,C++,开发,初始,许可 From: https://www.cnblogs.com/jm-luoxuanpao/p/17817559.html