Qt5 與 Qt4 其中的一個區別是底層架構進行了改變,Qt5 引入了更加詳細的模塊化的概念,將衆多功能細分到幾個模塊之中,Qt4 則是一種粗略的劃分。本文主要對 Qt5 和 Qt4的模塊進行一個簡單的介紹。html
(注:本文引用Qt4.8和Qt5.6兩個版本)android
1、Qt4.8 (http://doc.qt.io/qt-4.8/modules.html)web
1.基礎模塊:sql
1)QtCore,提供核心的非 GUI 功能,全部模塊都須要這個模塊。全部這些類均可以經過<QtCore>頭文件引入。。數據庫
2)QtGui,提供 GUI 程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖像、字體、拖放等。這些類通常由 Qt 用戶界面類內部使用,固然也能夠用於訪問底層的 OpenGL ES 圖像 API。Qt Gui 模塊提供的是全部圖形用戶界面程序都須要的通用功能。canvas
3)QtMultimedia,提供視頻、音頻、收音機以及攝像頭等功能。這些類能夠經過<QtMultimedia> 引入,並且須要在 pro 文件中添加 QT += multimedia。windows
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 提供進程間交互。
2、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設計器設計的表單。