1. 程式人生 > >QT框架簡介

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

Qt Core

其它模組使用的核心非圖形類,提供了元物件系統、物件樹、訊號槽、執行緒、輸入輸出、資源系統、容器、動畫框架、JSON 支援、狀態機框架、外掛系統、事件系統等等所有基礎功能

Qt GUI

圖形使用者介面(GUI)元件的基類。包括OpenGL。

Qt Multimedia

用於多媒體開發的音訊、視訊、無線和相機功能

Qt Multimedia Widgets

用於實現多媒體功能的基於小部件的類。

Qt Network

網路模組

Qt QML

QML和javascript解析引擎

Qt Quick

基於上述語言的現代介面和功能開發框架

Qt Quick Controls

用於開發具有傳統桌面風格的qml控制元件

Qt Quick Dialogs

用於從Qt Quick應用程式建立系統對話方塊並與之互動的型別。

Qt Quick Layouts

用於qml介面開發的佈局工具

Qt SQL

資料庫模組

Qt Test

測試模組

Qt Widgets

基於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