Qt5 與 Qt4 其中的一個區別是底層架構進行了改變,Qt5 引入了更加詳細的模塊化的概念,將眾多功能細分到幾個模塊之中,Qt4 則是一種粗略的划分。本文主要對 Qt5 和 Qt4的模塊進行一個簡單的介紹。
(注:本文引用Qt4.8和Qt5.6兩個版本)
一、Qt4.8 (http://doc.qt.io/qt-4.8/modules.html)
1.基礎模塊:
1)QtCore,提供核心的非 GUI 功能,所有模塊都需要這個模塊。所有這些類都可以通過<QtCore>頭文件引入。。
2)QtGui,提供 GUI 程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖像、字體、拖放等。這些類一般由 Qt 用戶界面類內部使用,當然也可以用於訪問底層的 OpenGL ES 圖像 API。Qt Gui 模塊提供的是所有圖形用戶界面程序都需要的通用功能。
3)QtMultimedia,提供視頻、音頻、收音機以及攝像頭等功能。這些類可以通過<QtMultimedia> 引入,而且需要在 pro 文件中添加 QT += multimedia。
4)QtNetwork,提供跨平台的網絡功能。這些類可以通過 <QtNetwork> 引入,而且需要在 pro 文件中添加 QT += network。
5)QtOpenGL,提供對 OpenGL 的支持。
6)QtOpenVG,提供對 OpenVG 的支持。
7)QtScript,提供對 Qt Scripts 的支持。
8)QtScriptTools,為 Qt Script 提供的額外組件。
9)QtSql,提供對 SQL 數據庫的支持。
10)QtSvg,提供對 SVG 文件的支持。
11)QtWebKit,提供顯示和編輯 Web 內容。
12)QtXml,XML 處理。
13)QtXmlPatterns,提供對 XQuery、XPath 等的支持。
14)QtDeclarative,用於編寫動畫形式的圖形用戶界面的引擎。
15)Phonon,多媒體框架。
16)Qt3Support,Qt 3 兼容類庫。
2.工具模塊:
1)QtDesigner,用於擴展 Qt Designer。
2)QtUiTools,用於在自己的引用程序中處理 Qt Designer 生成的 form 文件。
3)QtHelp,聯機幫助。
4)QtTest,單元測試。
3.專門供 Windows 平台的模塊:
1)QAxContainer,用於訪問 ActiveX 控件。
2)QAxServer,用於編寫 ActiveX 服務器。
4.專門供 Unix 平台的模塊:
1)QtDBus,使用 D-Bus 提供進程間交互。
二、Qt5.6 (http://doc.qt.io/qt-5/qtmodules.html)
Qt5模塊分為 Essentials Modules 和 Add-on Modules 兩部分。前者是基礎模塊,在所有平台上都可用;后者是擴展模塊,建立在基礎模塊的基礎之上,在能夠運行 Qt 的平台之上可以酌情引入。
1.基礎模塊:
1)QtCore,提供核心的非 GUI 功能,所有模塊都需要這個模塊。這個模塊的類包括了動畫框架、定時器、各個容器類、時間日期類、事件、IO、JSON、插件機制、智能指針、圖形(矩形、路徑等)、線程、XML 等。所有這些類都可以通過 <QtCore> 頭文件引入。
2)QtGui,提供 GUI 程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖像、字體、拖放等。這些類一般由 Qt 用戶界面類內部使用,當然也可以用於訪問底層的 OpenGL ES 圖像 API。Qt Gui 模塊提供的是所有圖形用戶界面程序都需要的通用功能。
3)Qt Multimedia、Qt Multimedia Widgets,提供視頻、音頻、收音機以及攝像頭等功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += multimedia。
4) Qt Network,提供跨平台的網絡功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += network。
5) Qt QML,提供供 QML(一種腳本語言,也提供 JavaScript 的交互機制) 使用的 C++ API。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += qml。
6) Qt Quick、Qt Quick Layouts、Qt Quick Dialogs、Qt Quick Controls,允許在 Qt/C++ 程序中嵌入 Qt Quick(一種基於 Qt 的高度動畫的用戶界面,適合於移動平台開發)。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += quick。
7) Qt SQL,允許使用 SQL 訪問數據庫。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += sql。
8) Qt Test,提供 Qt 程序的單元測試功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += testlib。
2.擴展模塊:
1)Active Qt,專門用於windows的使用ActiveX和COM應用;
2)Enginio,提供一個數據庫后台,通過它規定的API調用,就可以將應用程序的各種數據存儲在后台上,實現即存即得。
3)Qt Android Extras,用於Android開發;
4)Qt Bluetooth,提供硬件藍牙的訪問;
5)Qt Canvas 3D,使用js開發的Qt Quick調用的OpenGL3D繪圖模塊;
6)Qt Concurrent,多線程的並行計算框架;
7)Qt D-Bus,D-BUS通訊協議接口;
8)Qt Graphical Effects,Qt Quick使用的處理圖形效果的模塊;
9)Qt Image Formats,支持多種圖像格式, TIFF, MNG, TGA, WBMP等;
10)Qt Location,QML中展示地圖、導航、位置的模塊;
11)Qt Mac Extras,專為MAC平台提供的接口,可以使用OS和IOS操作系統的方法;
12)Qt NFC,用於方位近場通信設備的接口模塊;
13)Qt OpenGL,OpenGL模塊,已經包含進QtCore;
14)Qt Platform Headers,提供特定平台接口,綁定平台運行時狀態的插件的模塊;
15)Qt Positioning,提供方位位置,衛星和區域監控的模塊;
16)Qt Print Support,打印模塊;
17)Qt Quick Extras,提供Qt Quick模塊的特殊控制方式;
18)Qt Quick Widgets,提供C++和Qt Quick模塊的交互;
19)Qt Script,使用JS引擎的模塊;
20)Qt Script Tools,使用Qt Script模塊的額外組建模塊;
21)Qt Sensors,訪問硬件傳感器和進行手勢識別的模塊;
22)Qt Serial Port,虛擬串口通信模塊;
23)Qt SVG,SVG文件進行處理的模塊;
24)Qt WebChannel,用於與html和js進行無縫交互;
25)Qt WebEngine,QML用於web開發的模塊;
26)Qt WebEngine Widgets,C++用於web開發的模塊;
27)Qt WebEngine Core,為QML和C++進行web開發提供公共的接口;
28)Qt WebSockets,提供RFC6455通信協議支持;
29)Qt WebView,不需要完整的web瀏覽器支持,即可展示QML開發的web應用;
30)Qt Windows Extras,提供windows API支持;
31)Qt X11 Extras,提供X11 API支持;
32)Qt XML,利用SAX和DOM進行XML解析的接口;
33)Qt XML Patterns,支持XPath, XQuery, XSLT and XML 的模式驗證。
3.GPL和GPLv3等商用協議模塊,開源版本不支持(也就是增值模塊)
1)Qt for Device Creation,快速、容易、完整的嵌入式開發工具;
2)Qt Charts,利用UI組件展示數據模型,圖表模塊;
3)Qt Quick Compiler,QML編譯器,將QML文件編譯成二進制文件,以提高加載速度和代碼的安全性;
4)Qt Data Visualization,進行3D數據可視化的開發模塊;
5)Qt Purchasing,開發移動平台的商店,購物模塊;
6)Qt Virtual Keyboard,虛擬鍵盤模塊;
7)Qt Quick 2D Renderer,支持沒有OpenGL模塊的QML2D展示模塊。
4.技術預覽模塊
1)Qt 3D,2D、3D實時仿真渲染模塊;
2)Qt Serial Bus,串行總線接口,目前只支持Modbus和CAN;
3)Qt Labs Controls,為移動設備和嵌入式方面提供一個輕量級的QML開發接口,為QML開發提供簡易樣式架構,協同Qt Quick和Qt Quick Layouts模塊進行工作。
5.工具模塊:
1)Qt Designer,UI設計器;
2)Qt Help,幫助文檔;
3)Qt UI Tools,用於處理UI設計器設計的表單。