Qt系列文章011-Qt模块介绍
1 前言
Qt的模块相当多,不去分类看,可以看得眼花缭乱,不知道从何处开始看起,仔细分类后其实有没有多少,一共可以分为四个大模块和1个工具库,有兴趣了解更多的可以自己去Qt官方文档中搜索 All Modules 关键词,就一目了然了,好了,下面我开始逐步详细讲解每个大模块的作用和它包含的小模块的含义。上菜!
公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。
公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。
官方店:https://shop114595942.taobao.com//
2 Qt 类库的模块分类介绍
Qt类库里大量的类根据功能分为各种模块,这些模块又分为几大类:
Qt基本模块(Qt Essentials): 提供了Qt在所有平台上的基本功能。Qt附加模块(QtAdd-Ons): 实现一些特定功能的提供附加价值的模块。增值模块( Value-Add Modules): 单独发布的提供额外价值的模块或工具。技术预览模块(Technology Preview Modules): 一 些处于开发阶段,但是可以作为技术预 览使用的模块。Qt工具(Qt Tools): 帮助应用程序开发的一-些工具。
下面我会根据这几个大模块来分开介绍,先把概念弄清楚,后面使用起来就不费劲!
2.1 Qt 基本模块
Qt基本模块(Qt Essentials) 是Qt在所有平台上的基础。它们可以在所有受支持的开发平台和测试的目标平台上使用。除了将保持源代码兼容的测试模块之外,在整个Qt 5系列中,基本模块 都是保证源代码和二进制兼容的。这些具体的基本模块 见下表:
模块描述Qt Core其他模块都用到的核心非图形类Qt GUI设计GUI界面的基础类,包括OpenGLQt Multimedia音频、视频、摄像头和广播功能的类.Qt Multimedia Widgets实现多媒体功能的界面组件类Qt Network使网络编程更简单和轻便的类Qt QML用于QML和JavaScript语言的类Qt Quick用于构建具有定制用户界面的动态应用程序的声明框架Qt Quick Controls创建桌面样式用户界面,基于Qt Quick的用户界面控件Qt Quick Dialogs用于Qt Quick的系统对话框类型Qt Quick Layouts用于QtQuick2界面元素的布局项Qt Quick TestQML应用程序的单元测试框架,其中的测试用例是作为JavaScript函数编写的Qt SQL使用SQL用于数据库操作的类Qt Test用于应用程序和库进行单元测试的类Qt Widgets用于构建GUI界面的C++图形组件类
QtCore模块是Qt类库的核心,所有其他模块都依赖于此模块,如果使用qmake构建项目,则QtCore模块是自动被加入项目的。
Qt GUI模块提供了用于开发GUI应用程序的必要的类,使用qmake构建应用程序时, QtGUI 模块是自动被加入项目的。如果项目中不使用GUI功能,则需要在项目配置文件中加入如下的一行:
QT -= gui
其他的模块- -般不会被自动加入到项目,如果需要在项目中使用某个模块,则可以在项目配置中添加此模块。例如,如果需要在项目中使用Qt Multimedia和Qt Multimedia Widgets模块,需要在项目配置文件中加入如下的语句:
QT += multimedia multimediawidgets
需要在项目中使用Qt SQL模块,就在项目配置文件中加入如下的语句:
QT += sql
2.2 Qt 附加模块
Qt附加模块可以实现一些特定目的。这些模块可能只在某些开发平台上有,或只能用于某些操作系统,或只是为了向后兼容。用户安装时可以选择性地安装这些附加模块。
下表是附加模块列表(未列出一些过时被弃用的模块)。.
项目ValueActive Qt用于开发使用ActiveX和COM的Windows应用程序Qt 3D支持2D和3D渲染,提供用于开发近实时仿真系统的功能Qt Android Extras提供Android平台相关的APIQt Bluetooth提供访问蓝牙硬件的功能Qt Concurrent提供一些类,无需使用底层的线程控制就可以编写多线程程序Qt D-Bus使进程间通过D-Bus协议通信的一-些类Qt Gamepad使Qt应用程序支持游戏手柄硬件的使用Qt Graphical Effects图形效果与Qt Quick 2使用Qt Help帮助类,用于将文档集成到应用程序中,类似于Qt Assistant。Qt Image Formats支持附加图片格式的插件,包括TIFF、MNG、TGA、WBMPQt Location在QML应用程序中显示地图、导航和放置内容Qt Mac Extras提供macOS平台相关的APIQt NFC提供访问NFC (近场通信)硬件的功能Qt Platform Headers提供封装特定于平台信息的类,这些类与平台插件的给定运行时配置相关联Qt Positioning提供一些类,用于通过GPS卫星、WiFi 等定位Qt Print Support提供一些用于打印控制的类Qt Purchasing提供一-些类,在Qt应用程序内实现应用内购买的功能Qt Quick Extras提供一组专门的控件,可用于在Qt Quick中构建接口Qt Quick Widgets提供用于显示Qt Quick用户界面的c++QWidget窗口小部件类Qt Remote Objects提供一种易于使用的机制,用于在进程或设备之间共享QObject的API(属性/信号/插槽)Qt SCXML提供用于从SCXML文件创建状态机并将其嵌入到应用程序中的类和工具Qt Sensors提供访问传感器硬件的功能,以识别运动和手势Qt Serial Bus访问串行工业总线的功能,目 前只支持CAN和Modbus协议Qt Serial Port提供对硬件和虚拟串口的访问。Qt Speech提供对可访问性特性,如文本转语言( text-to-speech)功能的支持。Qt SVG提供显示SVG图片文件的类Qt UI Tools用于在运行时动态加载Qt Designer中创建的基于QWidget的表单。Qt WebChannel用于实现服务器端(QML或C++应用程序)与客户端(HTML/ JavaScript 或QML应用程序)之间的P2P通信Qt WebEngine提供类和函数,实现在应用程序中嵌入网页内容Qt WebSockets提供兼容于RFC 6455的WebSocket通信,WebSocket 是实现客户端程序与远端主机进行双向通信的基于Web的协议Qt WebView使用平台本地的api在QML应用程序中显示web内容,而不需要包含完整的web浏览器堆栈。Qt Windows Extras提供Windows平台相关的APIQt X11 Extras为X11提供平台特定的APIQt XML该模块不再维护了,应使用Qt Core中的QXmlStreamReader和QXmlStreamWriterQt XML Patterns提供对XPath、XQuery、 XSLT 和XML等的支持Qt Wayland Compositor提供一个框架来开发一个Wayland排字器。Qt Charts用于数据显示的二维图表组件Qt Data Visualization用于3D数据可视化显示的界面组件Qt Network Authorization基于OAuth协议,为应用程序提供网络账号验证的功能Qt Virtual Keyboard实现不同输入法的虛拟键盘框架Qt Quick WebGL提供一个平台插件,允许使用WebGL在网络上流化Qt快速用户界面
2.3 Qt 拓展模块
除了随Qt5发布的上述这些模块,还有一-些模块(见下表)是单独发布的,它们有自己的发布时间表,这些模块只在商业版许可的Qt里才有。
特性描述Qt Automotive Suite用于开发车载信息娱乐(IVI)系统的软件组件和工具的集合。建立在Qt之上的设备创建提供,并符合GENIVI汽车平台架构Qt for Automation用于自动化相关领域的库和工具,如KNX、OPC UA和MQTTQt for Device Creation高效、易用、全集成的嵌入式设备应用程序开发工具,包括很多其他增值特性
2.4 Qt 技术预览模块
技术预览模块就是一些还处于开发和测试阶段的模块,一般技术预览模块经过几个版本的发布后会变成正式的模块。下表是Qt 5.12.9中的技术预览模块。
模块描述Qt for WebAssembly (Technology Preview)使用WebAssembly为web浏览器编译Qt应用程序的平台目标。
2.5 Qt 工具
Qt工具(见下表)在所有支持的平台上都可以使用,用于帮助应用程序的开发和设计。
工具描述Qt Designer用于扩展Qt设计器的类。