说起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 |
翻译: