QT 的模块

倾然丶 夕夏残阳落幕 提交于 2020-01-18 02:32:44

说起QT,给我的感觉就是一个C++的编程模式,不会QT就不好说C++道上浪迹过的。有很多博客对QT进行了系统性的梳理,再写一个感觉意义不大,我只是想看看官网上的资料,做一个最新的了解。

QT目前不仅仅支持C++接口,还有QMT(多范式语言)QT for Python。Python版本也非常好用,但最经典的还是C++版本,C++版本的文档是非常全的,功能也是最新的。所以我这里主要看c++版本。

QT是一套高效完善的界面编程API,虽然是一句话,但这本身也是一件非常了不起的事情。
为了实现这套完善的体系,QT又分了很多模块,我们先来看看这些模块的简单说明。

核心模块

模块 说明
Qt Core 核心类,不包含图像相关的封装
Qt GUI 主要的图像编程API接口模块,包含OpenGL
Qt Multimedia 一些多媒体功能,包含音频,视频,广播和照相机的处理
Qt Multimedia Widgets 多媒体组件模块
Qt Network 轻便易用的网络模块
Qt QML 给QML和JavaScript相关的处理模块
Qt Quick 提供用户自定义的动态框架
Qt Quick Controls 轻量化QML类型,位桌面系统,嵌入式和移动设备提供高性能的用户界面
Qt Quick Dialogs 轻量化的对话框交互模块
Qt Quick Layouts QT Quick 2的布局样式的用户界面模块
Qt Quick Test Qt提供的轻量化测试模块
Qt SQL SQL 集成模块
Qt Test 单元测试模块, 代码兼容
Qt Widgets QT用户界面的一些扩展组件

如果你是使用的 qmake 来编译你的项目,Qt Core 和 Qt GUI 模块是默认添加好的, 如果只想要添加 Qt Core, 需要添加下面这一行到你的 .pro 文件中:

QT -= gui

在 windows 上,如果你没有用qmake来进行编译,比如你用了CMAKE,你也需要配置对应的链接选项。

附加模块

附加模块是为了一些特定的场合制作的,需要注意的是可能某些编译平台并不支持。

模块 开发平台 目标平台 说明
Active Qt Windows Windows 使用ActiveX和COM的应用程序的类
Qt 3D All All 2维和3维的实时渲染
Qt Android Extras All Android Android 的一些扩展
Qt Bluetooth All Android, iOS, Linux, macOS, and UWP (*) 蓝牙支持
Qt Concurrent All All (*) 对底层线程的封装
Qt D-Bus All All (*) 通过D-Bus协议进行进程间通信
Qt Gamepad All Android, iOS, macOS, tvOS (包括远程tvOS), Linux, Windows, and QNX 游戏硬件的支持
Qt Graphical Effects All All Qt Quick 2的图像模块
Qt Help All All (*) 类似于 QT Assistant 的一个集成文档
Qt Image Formats All All 对不常见的图片插件 TIFF, MNG, TGA, WBMP.
Qt Location All All 使用QML再程序中 显示图片,导航,放置内容
Qt Mac Extras All macOS 为 macOS 提供的扩展
Qt NFC All Android and Linux (*) 提供 NFC 硬件支持
Qt OpenGL ( 不推荐) All All (*) OpenGL 支持模块。推荐使用QOpenGL代替
Qt Platform Headers Qt for Windows, Linux, macOS Qt for Windows, Linux, macOS, Android (*) 提供封装平台特定信息的类,这些类与平台插件的给定运行时配置相关联。
Qt Positioning All Android, iOS, macOS, Linux, UWP (*). 定位,卫星和区域监控
Qt Print Support All All (*) 打印硬件
Qt Purchasing All Android, iOS, and macOS. 提供终端购买接口
Qt Quick Controls 1 ( 不推荐) All All (*) 基于可重用的Qt Quick的UI控件创建经典的桌面样式用户界面。不推荐使用,因为Qt Quick Controls 2更易于使用。
Qt Quick Extras All All (*) 基于 Qt Quick 提供的一组可重用的控件集合
Qt Quick Timeline All All (*) 启用基于关键帧的动画和参数化
Qt Quick Widgets All All (*) 提供一些基于Qt Quick用户界面的组件
Qt Remote Objects All All 提供一个简易的进程或者设备之间的共享接口
Qt Script ( 不推荐) All All Qt 的脚本支持, 推荐使用 Qt QML 模块中的 QJS* 模块替代
Qt SCXML All All 可以通过 SCXML 文件的配置创建状态机并嵌入到程序中
Qt Script Tools ( 不推荐) All All (*) 基于 Qt Script 的扩展组件
Qt Sensors All Android, Qt for iOS, UWP, Mer, and QNX. 传感器硬件和运动手势识别
Qt Serial Bus All Windows, Linux, Boot to Qt targets, and QNX. 对串行工业总线接口的访问。当前,该模块支持CAN总线和Modbus协议
Qt Serial Port All Windows, Linux, macOS, and QNX. 访问硬件和虚拟串行端口
Qt Speech All All except QNX.
Qt SVG All All SVG文件支持,目前集成的SVG1.2本版的协议
Qt UI Tools All All (*) 处理运行的时候根据Qt Designer 产生的表单动态创建的组件
Qt WebChannel All All 将HTML转换为QObject或者QML无缝嵌入到HTML/JavaScript客户端
Qt WebEngine All Windows, Linux, and macOS. 通过chromium浏览器项目嵌入Web程序
Qt WebSockets All All 提供符合RFC 6455的WebSocket通信
Qt WebView All Platforms with a native web engine. 在QML程序中显示Web内容,而无需完整的Web浏览器
Qt Windows Extras All Windows平台特定的API
Qt X11 Extras All Linux/X11 X11平台特定的API
Qt XML All All (*) 通过 C++ 实现的 SAX 和 DOM
Qt XML Patterns (不推荐) All All 支持XPath,XQuery,XSLT和XML模式验证
Qt Wayland Compositor Linux Linux and Boot to Qt targets. 开发Wayland合成器的框架

一些再商业许可或者再GNU General Public License v3许可下的附加模块

模块 开发平台 目标平台 说明
Qt Charts All All UI组件,包含显示视觉上新宜的图表,该图表由静态或动态数据模型驱动。
Qt Data Visualization All All 用于创建惊人的3D数据可视化的组件
Qt Network Authorization All All 为基于OAuth的在线服务授权提供支持
Qt Virtual Keyboard All Linux,Windows桌面系统和Boot to Qt终端 用于实现不同输入法的框架以及QML虚拟键盘。支持本地化的键盘布局和自定义视觉主题。
Qt for WebAssembly All 具有WebAssembly支持的Web浏览器 使用WebAssembly为Web浏览器编译Qt应用程序的平台目标。
Qt Quick WebGL All 启用WebGL的网络浏览器 提供一个平台插件,该插件允许使用WebGL™通过网络流式传输Qt Quick用户界面。

高级模块

模块 说明
Qt Automotive Suite 用于开发车载信息娱乐(IVI)系统的软件组件和工具的集合。建立在Qt for Device Creation产品之上,并符合GENIVI汽车平台架构
Qt for Automation 用于自动化相关领域的库和工具,例如KNX,OPC UA和MQTT
Qt for Device Creation 用于快速,轻松且完全集成的嵌入式设备应用程序开发的工具。包含在大多数其他增值解决方案中

技术预览功能

模块 说明
Qt Lottie Animation QML API,用于以JSON格式呈现图形和动画,由Bodymovin插件针对Adobe®After Effects导出
Qt Quick 3D Qt Quick 3D提供了用于基于Qt Quick创建3D内容或UI的高级API

翻译:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!