#(6):Qt 模塊簡介
Qt 5 與 Qt 4 最大的一個區別之一是底層架構有了修改。Qt 5 引入了模塊化的概念,將眾多功能細分到幾個模塊之中。Qt 4 也有模塊的概念,但是是一種很粗的劃分,而 Qt 5 則更加細化。本節主要對 Qt 5 的模塊進行一個簡單的介紹,以便以后大家需要哪些功能的時候知道到哪個模塊去尋找。
Qt 5 模塊分為?Essentials Modules 和?Add-on Modules 兩部分。前者是基礎模塊,在所有平臺上都可用;后者是擴展模塊,建立在基礎模塊的基礎之上,在能夠運行 Qt 的平臺之上可以酌情引入。
Qt 基礎模塊分為以下幾個:
* **Qt Core**,提供核心的非 GUI 功能,所有模塊都需要這個模塊。這個模塊的類包括了動畫框架、定時器、各個容器類、時間日期類、事件、IO、JSON、插件機制、智能指針、圖形(矩形、路徑等)、線程、XML 等。所有這些類都可以通過 頭文件引入。
* **Qt Gui**,提供 GUI 程序的基本功能,包括與窗口系統的集成、事件處理、OpenGL 和 OpenGL ES 集成、2D 圖像、字體、拖放等。這些類一般由 Qt 用戶界面類內部使用,當然也可以用于訪問底層的 OpenGL ES 圖像 API。Qt Gui 模塊提供的是所有圖形用戶界面程序都需要的通用功能。
* **Qt Multimedia**,提供視頻、音頻、收音機以及攝像頭等功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT +=?multimedia。
* **Qt Network**,提供跨平臺的網絡功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += network。
* **Qt Qml**,提供供 QML(一種腳本語言,也提供 JavaScript 的交互機制) 使用的 C++ API。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += qml。
* **Qt Quick**,允許在 Qt/C++ 程序中嵌入 Qt Quick(一種基于 Qt 的高度動畫的用戶界面,適合于移動平臺開發)。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += quick。
* **Qt SQL**,允許使用 SQL 訪問數據庫。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += sql。
* **Qt Test**,提供 Qt 程序的單元測試功能。這些類可以通過 引入,而且需要在 pro 文件中添加 QT += testlib。
* **Qt Webkit**,基于?WebKit2 的實現以及一套全新的 QML API(順便說一下,Qt 4.8 附帶的是 QtWebkit 2.2)。
Qt 擴展模塊則有更多的選擇:
* **Qt 3D**,提供聲明式語法,在 Qt 程序中可以簡單地嵌入 3D 圖像。Qt 3D 為 Qt Quick 添加了 3D 內容渲染。Qt 3D 提供了 QML 和 C++ 兩套 API,用于開發 3D 程序。
* **Qt Bluetooth**,提供用于訪問藍牙無線設備的 C++ 和 QML API。
* **Qt Contacts**,用于訪問地址簿或者聯系人數據庫的 C++ 和 QML API。
* **Qt Concurrent**,封裝了底層線程技術的類庫,方便開發多線程程序。
* **Qt D-Bus**,這是一個僅供 Unix 平臺使用的類庫,用于利用 D-Bus 協議進行進程間交互。
* **Qt Graphical Effects**,提供一系列用于實現圖像特效的類,比如模糊、銳化等。
* **Qt Image Formats**,支持圖片格式的一系列插件,包括 TIFF、MNG、TGA 和 WBMP。
* **Qt JS Backend**,該模塊沒有公開的 API,是 V8 JavaScript 引擎的一個移植。這個模塊僅供 QtQml 模塊內部使用。
* **Qt Location**,提供定位機制、地圖和導航技術、位置搜索等功能的 QML 和 C++ API。
* **Qt OpenGL**,方便在 Qt 應用程序中使用 OpenGL。該模塊僅僅為了程序從 Qt 4 移植到 Qt 5 的方便才保留下來,如果你需要在新的 Qt 5 程序中使用 OpenGL 相關技術,需要使用的是 QtGui 模塊中的 QOpenGL。
* **Qt Organizer**,使用 QML 和 C++ API 訪問組織事件(organizer event)。organizer API 是 Personal Information Management API 的一部分,用于訪問 Calendar 信息。通過?Organizer API 可以實現:從日歷數據庫訪問日歷時間、導入?iCalendar 事件或者將自己的事件導出到?iCalendar。
* **Qt Print Support**,提供對打印功能的支持。
* **Qt Publish and Subscribe**,為應用程序提供對項目值的讀取、導航、訂閱等的功能。
* **Qt Quick 1**,從 Qt 4 移植過來的 QtDeclarative 模塊,用于提供與 Qt 4 的兼容。如果你需要開發新的程序,需要使用 QtQuick 模塊。
* **Qt Script**,提供腳本化機制。這也是為提供與 Qt 4 的兼容性,如果要使用腳本化支持,請使用 QtQml 模塊的 QJS* 類。
* **Qt Script Tools**,為使用了 Qt Script 模塊的應用程序提供的額外的組件。
* **Qt Sensors**,提供訪問各類傳感器的 QML 和 C++ 接口。
* **Qt Service Framework**,提供客戶端發現其他設備的服務。Qt Service Framework 為在不同平臺上發現、實現和訪問服務定義了一套統一的機制。
* **Qt SVG**,提供渲染和創建 SVG 文件的功能。
* **Qt System Info**,提供一套 API,用于發現系統相關的信息,比如電池使用量、鎖屏、硬件特性等。
* **Qt Tools**,提供了 Qt 開發的方便工具,包括 Qt CLucene、Qt Designer、Qt Help 以及 Qt UI Tools 。
* **Qt Versit**,提供了對?Versit API 的支持。Versit API 是?Personal Information Management API 的一部分,用于 QContacts 和 vCard 以及 QOrganizerItems 和 iCalendar 之間的相互轉換。
* **Qt Wayland**,僅用于 Linux 平臺,用于替代 QWS,包括 Qt Compositor API(server)和 Wayland 平臺插件(clients)。
* **Qt WebKit**,從 Qt 4 移植來的基于 WebKit1 和 QWidget 的 API。
* **Qt Widgets**,使用 C++ 擴展的 Qt Gui 模塊,提供了一些界面組件,比如按鈕、單選框等。
* **Qt XML**,SAX 和 DOM 的 C++ 實現。該模塊已經廢除,請使用 QXmlStreamReader/Writer。
* **Qt XML Patterns**,提供對 XPath、XQuery、XSLT 和 XML Schema 驗證的支持。
這里需要強調一點,由于 Qt 的擴展模塊并不是 Qt 必須安裝的部分,因此 Qt 在未來版本中可能會提供更多的擴展模塊,這里給出的也僅僅是一些現在確定會包含在 Qt 5 中的一部分,另外還有一些,比如 Qt Active、Qt QA 等,則可能會在 beta 及以后版本中出現。
Qt 4 也分成若干模塊,但是這些模塊與 Qt 5 有些許多不同。下面是 Qt 4 的模塊:
* **QtCore**,Qt 提供的非 GUI 核心類庫,這一部分與 Qt 5 大致相同,只不過 Qt 4 的 core 類庫中并不包含 JSON、XML 處理等。
* **QtGui**,圖形用戶界面組件,這個模塊相當于 Qt 5 的 QtGui 與 QtWidgets 兩個模塊的總和。
* **QtMultimedia**,多媒體支持,類似 Qt 5 的相關部分。
* **QtNetwork**,網絡支持,類似 Qt 5。
* **QtOpenGL**,提供對 OpenGL 的支持。在 Qt 5 中,這部分被移植到 QtGui 模塊。
* **QtOpenVG**,提供對 OpenVG 的支持。
* **QtScript**,提供對 Qt Scripts 的支持。Qt Script 是一種類似于 JavaScript 的腳本語言。在 Qt 5 中,推薦使用 QtQml 的 JavaScript 部分。
* **QtScriptTools**,為 Qt Script 提供的額外組件。
* **QtSql**,提供對 SQL 數據庫的支持。
* **QtSvg**,提供對 SVG 文件的支持。
* **QtWebKit**,提供顯示和編輯 Web 內容。
* **QtXml**,XML 處理,這部分在 Qt 5 中被添加到了 QtCore。
* **QtXmlPatterns**,提供對 XQuery、XPath 等的支持。
* **QtDeclarative**,用于編寫動畫形式的圖形用戶界面的引擎。
* **Phonon**,多媒體框架。
* **Qt3Support**,Qt 3 兼容類庫。
下面是 Qt 4 的一些工具模塊:
* **QtDesigner**,用于擴展 Qt Designer。
* **QtUiTools**,用于在自己的引用程序中處理 Qt Designer 生成的 form 文件。
* **QtHelp**,聯機幫助。
* **QtTest**,單元測試。
下面是專門供 Windows 平臺的模塊:
* **QAxContainer**,用于訪問 ActiveX 控件。
* **QAxServer**,用于編寫 ActiveX 服務器。
下面是專門供 Unix 平臺的模塊:
* **QtDBus**,使用 D-Bus 提供進程間交互。
- (1)序
- (2)Qt 簡介
- (3)Hello, world!
- (4)信號槽
- (5)自定義信號槽
- (6)Qt 模塊簡介
- (7)MainWindow 簡介
- (8)添加動作
- (9)資源文件
- (10)對象模型
- (11)布局管理器
- (12)菜單欄、工具欄和狀態欄
- (13)對話框簡介
- (14)對話框數據傳遞
- (15)標準對話框 QMessageBox
- (16)深入 Qt5 信號槽新語法
- (17)文件對話框
- (18)事件
- (19)事件的接受與忽略
- (21)事件過濾器
- (22)事件總結
- (23)自定義事件
- (24)Qt 繪制系統簡介
- (25)畫刷和畫筆
- (26)反走樣
- (27)漸變
- (28)坐標系統
- (29)繪制設備
- (30)Graphics View Framework
- (31)貪吃蛇游戲(1)
- (32)貪吃蛇游戲(2)
- (33)貪吃蛇游戲(3)
- (34)貪吃蛇游戲(4)
- (35)文件
- (36)二進制文件讀寫
- (37)文本文件讀寫
- (38)存儲容器
- (39)遍歷容器
- (40)隱式數據共享
- (41)model/view 架構
- (42)QListWidget、QTreeWidget 和 QTableWidget
- (43)QStringListModel
- (44)QFileSystemModel
- (45)模型
- (46)視圖和委托
- (47)視圖選擇
- (48)QSortFilterProxyModel
- (49)自定義只讀模型
- (50)自定義可編輯模型
- (51)布爾表達式樹模型
- (52)使用拖放
- (53)自定義拖放數據
- (54)剪貼板
- (55)數據庫操作
- (56)使用模型操作數據庫
- (57)可視化顯示數據庫數據
- (58)編輯數據庫外鍵
- (59)使用流處理 XML
- (60)使用 DOM 處理 XML
- (61)使用 SAX 處理 XML
- (62)保存 XML
- (63)使用 QJson 處理 JSON
- (64)使用 QJsonDocument 處理 JSON
- (65)訪問網絡(1)
- (66)訪問網絡(2)
- (67)訪問網絡(3)
- (68)訪問網絡(4)
- (69)進程
- (70)進程間通信
- (71)線程簡介
- (72)線程和事件循環
- (73)Qt 線程相關類
- (74)線程和 QObject
- (75)線程總結
- (76)QML 和 QtQuick 2
- (77)QML 語法
- (78)QML 基本元素
- (79)QML 組件
- (80)定位器
- (81)元素布局
- (82)輸入元素
- (83)Qt Quick Controls
- (84)Repeater
- (85)動態視圖
- (86)視圖代理
- (87)模型-視圖高級技術
- (88)Canvas
- (89)Canvas(續)