QT框架簡介
剛開始接觸QT開發的時候用的是Qt 5.6.0版本,開發過程中沒有仔細瞭解過Qt具體的框架結構,只負責專案相關模組用C++進行開發和維護,對QT本身沒有關注,只是當成一個開發工具而已。隨著維護的內容深入,發現來對整個專案缺乏全面的瞭解,不知道為什麼專案這麼搭建為什麼分這些模組,所以很有必要先了解Qt裡邊的框架結構。
開啟QT工具,找到“幫助”選項,這裡邊可以查詢到很多qt的基本資訊,在開發過程中有時候遇到一些介面問題也可以在這裡找到例子,非常方便。這裡先了解一下模組劃分。
在“Look for”的搜尋框輸入all Modules檢視模組組成。
在“Contents”欄可以看到有5個模組組成。
Qt Essentials(基本模組)
Qt Add-Ons(擴充套件模組)
Value-Add Modules(增值模組)
Technology Preview Modules(技術預覽模組)
Qt Tools (Qt工具)
基本模組:
Module |
Description |
其它模組使用的核心非圖形類,提供了元物件系統、物件樹、訊號槽、執行緒、輸入輸出、資源系統、容器、動畫框架、JSON 支援、狀態機框架、外掛系統、事件系統等等所有基礎功能 | |
圖形使用者介面(GUI)元件的基類。包括OpenGL。 | |
用於多媒體開發的音訊、視訊、無線和相機功能 |
|
用於實現多媒體功能的基於小部件的類。 | |
網路模組 |
|
QML和javascript解析引擎 |
|
基於上述語言的現代介面和功能開發框架 |
|
Qt Quick Controls |
用於開發具有傳統桌面風格的qml控制元件 |
Qt Quick Dialogs |
用於從Qt Quick應用程式建立系統對話方塊並與之互動的型別。 |
Qt Quick Layouts |
用於qml介面開發的佈局工具 |
資料庫模組 |
|
測試模組 | |
基於widget的GUI開發控制元件 |
基本模組框架圖:
參考:https://blog.csdn.net/tennysonsky/article/details/46553663
對於整個框架,大家可以理解為下層模組為上層模組提供支援,或者說上層模組包含下層模組的功能。舉個例子,例如 QtWebKit 模組,它既有圖形介面部件也支援網路功能,還支援多媒體應用。 其中QtTest和QtSql是相互獨立的模組。
圖形介面庫框架
這個圖裡麵包含Qt GUI以及Qt Widget的部分組成,其中藍色塊表示包含在GUI模組中的,可以參考一下上圖中的Qt GUI模組的功能描述,並不包含所有的顯示部分,想要仔細瞭解可以查閱幫助文件。
從這裡也可以更加直觀的看到兩個不同的UI體系是怎麼架構起來的。它們被分為了兩類,一類以 OpenGL 為核心,它是現在最新的 QtQuick2 和 QtWebkit 的基礎;一類是以輔助訪問和輸入方式為基礎的一般圖形顯示類,它們是經典 QWidget 部件類和 QtQuick1 的基礎。
QtQml和QtQuick框架
Qt 5 中將QtQuick 分為了兩大部分:
QtQml:提供了一個 QML 語言框架,定義並實現了語言引擎基礎,還提供了便於開發者使用的 API,實現使用自定義型別來擴充套件 QML 語言以及將 JavaScript 和 C++ 整合到 QML 程式碼中。
QtQuick:是一個用於編寫 QML 程式的標準庫,它提供了使用 QML 建立使用者介面程式時需要的所有基本型別。
可以看到 QtQml 和 QtQuick 是獨立的兩部分:
QtQml 以 QtCore 為基礎,擁有 QtNetwork 的相關功能,然後搭建在了 V8 和 V4 兩個 JavaScript 引擎上。
QtQuick 以 QPA 為基礎,而後經過了 QtGui、OpenGL 和 Scene graph 三層封裝,這裡可以看到,新的 QtQuick 是建立在 OpenGL 之上的,並且使用了新的 Scene graph 進行圖形渲染。很明顯,QtQuick 就是用於圖形顯示的。
通過對比Quick1(QT5之前)和Quick2(QT5)可以瞭解到Quick2的功能更加強大了,有很多立體圖(3D)效果都是在QT5的基礎上實現的。
參考:
https://blog.csdn.net/tennysonsky/article/details/46553663