1.QT5基本框架
QT5引入了模塊化的概念,將實現(xiàn)眾多功能的QT庫細分為各個模塊谬哀,也就是說一個模塊中包含了實現(xiàn)某種功能的眾多C++類庫刺覆。QT4也有模塊的概念,但沒有QT5劃分的細史煎。
2.QT5模塊架構(gòu)
QT模塊的3個大的部分:Qt Essenrtials(Qt基本模塊)谦屑、Qt Add-Ons(擴展模塊)、Qt Tools(開發(fā)工具)
基本模塊:定義了適用于所有平臺的基礎(chǔ)功能篇梭,在 Qt 5 中氢橙,它們將保持源代碼和二進制
兼容,因此所有程序都需要使用基本模塊提供的功能(不一定需要使用所有的功能)恬偷。其中悍手,
基本模塊中的 QtCore 模塊是基礎(chǔ),所有其他的 Qt 模塊都要依賴于這個模塊袍患;
擴展模塊:是針對某種特定目的的模塊谓苟,擴展模塊可在某個特定平臺上使用,或者所有平
臺上都可使用(但不一定通用)协怒;
各模塊間的依賴關(guān)系:
理解模塊和類:概括地說涝焙,模塊包含的范圍更大,它涵蓋了類孕暇,模塊是以Qt開始的仑撞,類是以Q開始的。
3.QT的元對象
元對象系統(tǒng)是 Qt 對原有的 C++進行的一些擴展妖滔,主要是為實現(xiàn)信號和槽機制而引入的隧哮,
信號和槽機制是 Qt 的核心特征。在沒有信號槽機制的時代座舍,C++對象間的交互一般使用回調(diào)函數(shù)來實現(xiàn)沮翔。使用某對象時,用指針指向另一個對象的函數(shù)曲秉,這個函數(shù)就稱為回調(diào)函數(shù)采蚀。使用回調(diào)函數(shù)有個弊端,當(dāng)某個對象被多個對象通信時承二,需要一個容器來存放多個對象的回調(diào)函數(shù)榆鼠。維護這個容器使得代碼編寫效率低、擴展性弱亥鸠。
基于Qt元對象系統(tǒng)擴展的信號槽機制妆够,使得處理對象間通信變得更加高效识啦、靈活。
Qt 的元對象系統(tǒng)提供的功能有:對象間通信的信號和槽機制神妹、運行時類型信息和動態(tài)屬
性系統(tǒng)等颓哮。
另外一篇博文上有關(guān)元對象的部分介紹:
博文鏈接:
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元對象系統(tǒng)的介紹也比較準(zhǔn)確,推薦:
https://zhuanlan.zhihu.com/p/61303678
4.QT的反射機制
先上兩篇個人認為描述的比較好的博文:
https://blog.csdn.net/yzl11/article/details/49464033?locationNum=13&fps=1
https://www.cnblogs.com/findumars/p/8030601.html
并借用文章中的一句話:相對于Java天生的這一特性鸵荠,C++并不具備题翻;但進入到Qt的領(lǐng)域,這一切都邊得簡單自如了腰鬼。來理解反射機制的作用嵌赠。
反射機制:是指在運行時,能獲取任意一個類對象的所有類型信息熄赡、屬性姜挺、成員函數(shù)等信息的一種機制。
作用:編寫足夠通用的代碼來處理所有具有自我描述能力的類彼硫。
使用條件:
原理: