Qt中的元物件系統

2021-07-06 08:12:19 字數 563 閱讀 5686

qt中的元物件系統(meta-object system)提供了物件間通訊的訊號和槽機制,執行時型別資訊和動態屬性系統。元物件系統是基於以下三個條件的:

該類必須繼承自qobject類

必須在類的私有宣告區宣告q_object巨集(在類定義時,如果沒有指定public或private,則預設為private)

元物件編輯器meta-object complier(moc),為qobject的子類實現元物件提供必要的**

其中,moc攻擊讀取乙個c++原始檔,如果它發現乙個或者多個類的宣告中包含q_object巨集,便會另外建立乙個c++原始檔(就是在專案目中的debug目錄下看到的以moc開頭的c++原始檔),其中包含了為每乙個類生成的元物件**。這些產生的原始檔或者被包含進類的原始檔中,或者和類的實現同時進行編譯和鏈結。

元物件系統主要是為了實現訊號和槽機制才被引入的,不過除了訊號和槽機制以外,元物件系統還提供了其他的一些特性:

除了這些特性,還可使用qobject_cast()函式來對qobject類進行動態型別轉換,這個函式的功能類似於標準c++中的dynamic_cast()函式,但它不在需要rtti的支援。

Qt元物件系統

qmetaobject是負責元物件資訊的類,每個繼承自qobject的類都會有乙個qmetaobject物件,qobject物件共用該qmetaobject物件,給類提供遠多於c 預設的typeinfo提供的資訊。主要內容如下 1 類資訊 類 qmetaclassinfo q classinfo q...

Qt元物件系統

產生背景 qt的元物件系統為物件間的通訊提供了訊號槽機制 執行時型別資訊 動態屬性系統。核心內容 qt的元物件系統實現基於三方面 1.qobject基類。為能夠利用元物件系統的物件提供了乙個基類。2.q object巨集。用於實現元物件特性,如動態屬性 訊號槽。3.meta object compi...

Qt元物件系統

系統介紹 qt 元物件系統 meta object system qt的元物件系統基於如下三件事情 1.類 qobject,為所有需要利用元物件系統的物件提供了乙個基類。2.巨集 q object,通常可以宣告在類的私有段中,讓該類可以使用元物件的特性,比如動態屬性,訊號和槽。3.編譯器 元物件編譯...