qt类库使用方法:从零开始学Qt - 12
qt类库使用方法:从零开始学Qt - 12下面以Qt 5.14版本为例,对各种类型的模块分别进行介绍。大概了解一下Qt提供的模块的功能,能够在程序开发时做到心中有数,知道Qt是否提供了相关的功能以及到哪个模块去寻找。(3)增值模块(Value-Add Modules):单独发布的提供额外价值的模块或工具;(4)技术预览模块(Technology Preview Modules):一些处于开发阶段,但是可以作为技术预览使用的模块;(5)过时的模块(Deprecated Modules):是指抛弃的旧模块,除非为了兼容旧版本,一般用不到。
Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部。Qt 除了可以绘制漂亮的界面,还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些都以模块的形式内置在了Qt中。
Qt的模块根据功能分为几大类:
(1)Qt基本模块(Qt Essentials):提供了Qt在所有平台上的基本功能;
(2)Qt附加模块(Qt Add-Ons):实现一些特定功能的提供附加价值的模块;
(3)增值模块(Value-Add Modules):单独发布的提供额外价值的模块或工具;
(4)技术预览模块(Technology Preview Modules):一些处于开发阶段,但是可以作为技术预览使用的模块;
(5)过时的模块(Deprecated Modules):是指抛弃的旧模块,除非为了兼容旧版本,一般用不到。
大概了解一下Qt提供的模块的功能,能够在程序开发时做到心中有数,知道Qt是否提供了相关的功能以及到哪个模块去寻找。
下面以Qt 5.14版本为例,对各种类型的模块分别进行介绍。
一、Qt基本模块
Qt基本模块提供Qt在所有平台上的基本功能,它们在所有的开发平台和目标平台上都可用。这些具体的基本模块见下表。
模块 |
说明 |
Qt Core |
被其他模块用到的核心非图形类 |
Qt GUI |
设计GUI界面的基础类,包括OpenGL |
Qt Multimedia |
音频、视频、广播和摄像头功能 |
Qt Multimedia Widgets |
实现多媒体功能的界面组件类 |
Qt Network |
使网络编程更简单和轻便的类 |
Qt QML |
用于QML和JavaScripts语言的类 |
Qt Quick |
用于构建具有定制用户界面的动态应用程序的声明框架 |
Qt Quick Controls |
提供轻量级 QML 类型,用于为桌面、嵌入式和移动设备创建高性能用户界面。这些类型采用简单的样式体系结构,并且非常高效。 |
Qt Quick Dialogs |
用于Qt Quick的系统对话框类型 |
Qt Quick Layouts |
用于Qt Quick 2界面元素的布局项 |
Qt Quick Test |
QML 应用程序的单元测试框架,其中测试用例编写为 JavaScript 函数。 |
Qt SQL |
使用SQL用于数据库操作的类 |
Qt Test |
用于应用程序和库进行单元测试的类 |
Qt Widgets |
用于构建GUI界面的C 图形组件类 |
如果使用qmake来构建项目,则默认情况下包含Qt Core和Qt GUI模块。如果项目中不使用GUI功能,则需要在项目配置文件(*.pro)中加入如下的一行:
QT -= gui
其他模块一般不会被自动加入到项目中,如果需要使用某个模块,可以在项目配置文件中添加。比如,需要使用Qt SQL模块,则添加如下的语句:
QT = sql
二、Qt附加模块
Qt附加模块可以实现一些特定目的。这些模块可能只在某些开发平台上有,或只能用于某些操作系统,或只是为了向后兼容。用户安装时可以选择性地安装这些附加模块。关于某个模块具体适用的操作系统,可以参见Qt官网的说明。
附加模块比较多,下面分几个类别说明。
(1)一般的模块
模块 |
描述 |
Active Qt |
用于开发使用ActiveX和COM的Windows应用程序 |
Qt 3D |
提供开发近实时仿真系统的功能,支持2D和3D渲染 |
Qt Bluetooth |
提供访问蓝牙硬件的功能 |
Qt Concurrent |
无需使用底层的线程控制就可以编写多线程程序 |
Qt D-Bus |
使进程间通过D-Bus协议通信的类 |
Qt Gamepad |
是Qt应用程序支持游戏手柄硬件 |
Qt Help |
用于将文档集成到应用程序中的类,类似于Qt Assistant |
Qt Image Formats |
附加图像格式支持插件:TIFF MNG TGA .jpg |
Qt Location |
在 QML 应用程序中显示地图、导航和放置内容 |
Qt NFC |
提供对NFC硬件的访问 |
Qt PDF |
用于渲染 PDF 文档的类和函数 |
Qt Positioning |
访问位置、卫星和区域监视的类 |
Qt Print Support |
使打印更轻松、更便携的类 |
Qt Purchasing |
支持在 Qt 应用程序中应用内购买产品 |
Qt Remote Objects |
提供一种易于使用的机制,用于在进程或设备之间共享 QObject 的 API(属性/信号/槽) |
Qt SCXML |
提供用于从 SCXML 文件创建状态机并将其嵌入到应用程序中的类和工具 |
Qt Sensors |
提供对传感器硬件和运动手势识别的访问 |
Qt Serial Bus |
提供对串行工业总线接口的访问。目前,该模块支持CAN总线和Modbus协议 |
Qt Serial Port |
提供对实体和虚拟串行端口的访问 |
Qt Speech |
提供对文本到语音转换等辅助功能的支持 |
Qt SVG |
用于显示 SVG 文件内容的类。支持 SVG 1.2 Tiny 标准的子集 |
Qt UI Tools |
用于加载基于 QWidget 窗体的类,这些窗体在运行时动态地在 Qt Designer中创建 |
Qt WebEngine |
用于使用 Chromium 浏览器项目在应用程序中嵌入 Web 内容的类和函数 |
Qt WebSockets |
提供兼容 RFC 6455 的 WebSocket 通信 |
Qt XML |
C SAX 和 DOM 的实现。注意: 此模块不需要使用 QXmlStreamReader 和 QXmlStreamWriter。它们已经是Qt Core的一部分。 |
Qt Charts |
用于数据显示的二维图表组件 |
Qt Data Visualization |
用于3D数据可视化显示的界面组件 |
Qt Network Authorization |
为基于 OAuth 的联机服务授权提供支持 |
Qt Wayland Compositor |
提供开发 Wayland 合成器的框架 |
Qt for WebAssembly |
一个目标平台,用于使用WebAssembly为Web浏览器编译Qt应用程序 |
(2)平台支持模块
模块 |
描述 |
Qt Android Extras |
提供Android平台相关的API |
Qt Mac Extras |
为 macOS 提供特定于平台的 API |
Qt Platform Headers |
提供封装特定于平台的信息的类,这些信息与平台插件的给定运行时配置相关联 |
Qt Windows Extras |
为 Windows 提供特定于平台的 API |
Qt X11 Extras |
为 X11 提供特定于平台的 API |
(3)专门用于QML或Qt Quick的模块
模块 |
描述 |
Qt Graphical Effects |
用于Qt Quick 2的图形效果 |
Qt Location |
在 QML 应用程序中显示地图、导航和放置内容 |
Qt Quick Extras |
提供一组专用的控件,可用于在 Qt Quick 中构建接口 |
Qt Quick Timeline |
支持基于关键帧的动画和参数化 |
Qt Quick Widgets |
用于显示 Qt Quick用户界面的C Widget类 |
Qt WebChannel |
提供从 HTML 客户端访问 QObject 或 QML 对象,以便将 Qt 应用程序与 HTML/JavaScript 客户端无缝集成 |
Qt WebView |
通过使用平台原生 API 在 QML 应用程序中显示 Web 内容,而无需包含完整的 Web 浏览器堆栈 |
Qt Virtual Keyboard |
用于实现包括QML虚拟键盘的不同输入法的框架以。支持本地化的键盘布局和自定义视觉主题 |
Qt Quick WebGL |
提供一个平台插件,允许使用WebGL™通过网络流式地传输Qt Quick用户界面 |
三、增值模块
除了随着Qt5发布的上述模块外,还有一些模块在Qt库的基础上构建并提供额外的功能。这些模块是单独发布的,并且只在商业版许可的Qt里才有。
模块 |
描述 |
Qt Automotive Suite |
用于开发车载信息娱乐 (IVI) 系统的软件组件和工具的集合。基于Qt for Device Creation产品构建,符合GENIVI汽车平台架构。 |
Qt for Automation |
自动化相关领域的库和工具,如 KNX、OPC UA 和 MQTT |
Qt for Device Creation |
用于快速、简单且完全集成的嵌入式设备应用程序开发的工具。包含在大多数其他增值解决方案中 |
四、技术预览模块
技术预览模块就是一些还处于开发和测试阶段的模块,一般技术预览模块经过几个版本的发布后会变成正式的模块。下表中是Qt5.14中的技术预览模块。
模块 |
说明 |
Qt Lottie Animation |
一个QML API,用于以JSON格式渲染图形和动画,由Adobe® After Effects的Bodymovin插件导出 |
Qt Quick 3D |
提供高级 API,用于基于 Qt Quick 创建 3D 内容或 UI |
五、弃用的模块
弃用的模块,一般都有了更好的替代品,除非为了兼容旧版本,一般用不到。
模块 |
描述 |
Qt OpenGL |
OpenGL支持类。已弃用,取而代之的是 Qt GUI 模块中的类。 |
Qt Quick Controls 1 |
可重用的基于Qt Quick的UI控件,用于创建经典的桌面风格用户界面。已弃用,取而代之的是Qt Quick Controls 2,后者更好,更易于使用 |
Qt Script |
用于使 Qt 应用程序支持脚本的类。已弃用,替代的是Qt QML模块中的类 |
Qt Script Tools |
使用 Qt 脚本的应用程序的其他组件 |
Qt XML Patterns |
支持 XPath、XQuery、XSLT 和 XML 架构验证 |
总结一下,本文以Qt 5.14为例介绍了各种不同类型的模块。Qt不同发行版所提供的模块可能也是不同的,比如技术预览模块Qt Lottie Animation在Qt 5.15中变成了正式版的附加模块,而Qt 5.15中也多了增值模块Qt for MCUs。
觉得有用的话,希望大家多多关注评论转发[赞],谢谢!