元物件系統的整體結構分析 續三

2021-05-23 18:38:10 字數 1110 閱讀 5625

注:此文是從我的qq空間裡移出來的,因為覺的用那麼多空間,blog了太累了,它發表於   2023年12月31日 13:58

元物件系統的整體結構分析(

續三)程式架構又一次重寫了,這次應該會作為本次測試的最終架構模型了,又需要加班幾天才行了。不過原始碼分析是不會變得,已經堅持了兩星期,我要慢慢走向我的兩年計畫!

好了,現在開始今天的探索:

再次來到corelib/kernel/qmetaobject.h

檔案,今天研究一下qmetaenum

類,該類通過對映的關係提供了keytovalue

和valuetokey

的方式進行提取。

const char *qmetaenum::key(int index) const

這是該類中乙個方法的實現,可以看出來,這些方法的實現都是對qmetaobject

類的簡單引用,提供了一定得方法封裝。這樣一來,我們得到了一種新的封裝方式,可以通過該類的寫法完成對大型類方法的分類,以及降低耦合度。

採用同樣的方法,qt

將qmetamethod

、qmetaproperty

、qmetaclassinfo

類從qmetaobject

中分離出來,進行分類管理。

我們看到,qmetaobject

類的定義和實現位置分別在qobjectdefs.h

和qobject.cpp

中,qt

將該類列入了object

型別,而qmetaobject

中分離出來的方法被放在了元物件系統當中。整個元物件系統,qmetaobject

提供訊號和槽的主要實現機制,而其他的幾個類則是做了一些輔助的資料處理方法封裝。

到這裡,簡單的qmetaobject

類的分析完成了,大致了解了qt

在這一部分的類間關係,和一些簡單的機制。至於其編碼方面更深層次的東西,一時還看不明白,需要繼續對qt

其他部分研究之後,再做詳細分析。接下來,我們該向qt

類吧,該類提供了qt

的事件機制,從系統手中接管訊息並進行派送,是如何實現的呢?讓我們拭目以待。

2009

年10月25

日星期日23

:25

Qt中的元物件系統

qt中的元物件系統 meta object system 提供了物件間通訊的訊號和槽機制,執行時型別資訊和動態屬性系統。元物件系統是基於以下三個條件的 該類必須繼承自qobject類 必須在類的私有宣告區宣告q object巨集 在類定義時,如果沒有指定public或private,則預設為priv...

資料庫系統的整體結構

從構件角度看,資料庫系統由硬體 軟體等部分組成。從資料庫管理系統角度看,資料庫系統通常採用 模式結構,這是資料庫管理系統內部的系統結構。從終端使用者角度看,資料庫系統結構可以分為集中式結構 分布式結構 客戶 伺服器結構和並行結構。這也是資料庫系統外部的體系結構。在資料庫系統中,使用者看到的資料和計算...

物件導向的三大特徵3(續)

static 2.static修飾方法 類方法 1 修飾方法,這個方法就屬於類本身了,我可以通過 類名.方法名 進行呼叫 2 隨著類而載入 3 在靜態方法裡面只能呼叫靜態變數和靜態方法,相反在普通放裡面可以呼叫靜態方法和靜態變數,因為靜態方法或靜載入時機早於例項變數和例項方法的載入時機 4 不能使用...