Qt5入門學(xué)習(xí)——Qt模塊框架、元對(duì)象系統(tǒng)與反射機(jī)制

1.QT5基本框架

QT5引入了模塊化的概念,將實(shí)現(xiàn)眾多功能的QT庫(kù)細(xì)分為各個(gè)模塊,也就是說(shuō)一個(gè)模塊中包含了實(shí)現(xiàn)某種功能的眾多C++類庫(kù)。QT4也有模塊的概念,但沒(méi)有QT5劃分的細(xì)。

2.QT5模塊架構(gòu)

QT模塊的3個(gè)大的部分:Qt Essenrtials(Qt基本模塊)、Qt Add-Ons(擴(kuò)展模塊)、Qt Tools(開發(fā)工具)

基本模塊:定義了適用于所有平臺(tái)的基礎(chǔ)功能,在 Qt 5 中,它們將保持源代碼和二進(jìn)制
兼容,因此所有程序都需要使用基本模塊提供的功能(不一定需要使用所有的功能)。其中,
基本模塊中的 QtCore 模塊是基礎(chǔ),所有其他的 Qt 模塊都要依賴于這個(gè)模塊;

擴(kuò)展模塊:是針對(duì)某種特定目的的模塊,擴(kuò)展模塊可在某個(gè)特定平臺(tái)上使用,或者所有平
臺(tái)上都可使用(但不一定通用);

各模塊間的依賴關(guān)系

理解模塊和類:概括地說(shuō),模塊包含的范圍更大,它涵蓋了類,模塊是以Qt開始的,類是以Q開始的。

3.QT的元對(duì)象

元對(duì)象系統(tǒng)是 Qt 對(duì)原有的 C++進(jìn)行的一些擴(kuò)展,主要是為實(shí)現(xiàn)信號(hào)和槽機(jī)制而引入的,
信號(hào)和槽機(jī)制是 Qt 的核心特征。在沒(méi)有信號(hào)槽機(jī)制的時(shí)代,C++對(duì)象間的交互一般使用回調(diào)函數(shù)來(lái)實(shí)現(xiàn)。使用某對(duì)象時(shí),用指針指向另一個(gè)對(duì)象的函數(shù),這個(gè)函數(shù)就稱為回調(diào)函數(shù)。使用回調(diào)函數(shù)有個(gè)弊端,當(dāng)某個(gè)對(duì)象被多個(gè)對(duì)象通信時(shí),需要一個(gè)容器來(lái)存放多個(gè)對(duì)象的回調(diào)函數(shù)。維護(hù)這個(gè)容器使得代碼編寫效率低、擴(kuò)展性弱。
基于Qt元對(duì)象系統(tǒng)擴(kuò)展的信號(hào)槽機(jī)制,使得處理對(duì)象間通信變得更加高效、靈活。
Qt 的元對(duì)象系統(tǒng)提供的功能有:對(duì)象間通信的信號(hào)和槽機(jī)制、運(yùn)行時(shí)類型信息和動(dòng)態(tài)屬
性系統(tǒng)等。

另外一篇博文上有關(guān)元對(duì)象的部分介紹:


博文鏈接:
https://blog.csdn.net/yao5hed/article/details/81142341?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11.control

知乎上一篇關(guān)于QT元對(duì)象系統(tǒng)的介紹也比較準(zhǔn)確,推薦:
https://zhuanlan.zhihu.com/p/61303678

4.QT的反射機(jī)制

先上兩篇個(gè)人認(rèn)為描述的比較好的博文:
https://blog.csdn.net/yzl11/article/details/49464033?locationNum=13&fps=1

https://www.cnblogs.com/findumars/p/8030601.html

并借用文章中的一句話:相對(duì)于Java天生的這一特性,C++并不具備;但進(jìn)入到Qt的領(lǐng)域,這一切都邊得簡(jiǎn)單自如了。來(lái)理解反射機(jī)制的作用。

反射機(jī)制:是指在運(yùn)行時(shí),能獲取任意一個(gè)類對(duì)象的所有類型信息、屬性、成員函數(shù)等信息的一種機(jī)制。

作用:編寫足夠通用的代碼來(lái)處理所有具有自我描述能力的類。

使用條件:


原理:


1609920985(1).jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容