Qt元物件系統

2021-08-14 07:37:26 字數 678 閱讀 3417

產生背景

qt的元物件系統為物件間的通訊提供了訊號槽機制、執行時型別資訊、動態屬性系統。

核心內容

qt的元物件系統實現基於三方面:

1. qobject基類。為能夠利用元物件系統的物件提供了乙個基類。

2. q_object巨集。用於實現元物件特性,如動態屬性、訊號槽。

3. meta-object compiler 元物件編譯器。為qobject子類提供必要的**來實現元物件特性。

moc工具會讀取c++原始檔,如果發現類宣告中包含q_object巨集,會生成新的c++原始檔,每個類包含元物件**。

額外特性

除了提供物件間通訊的機制:訊號槽。元物件**還提供了額外的特性:

1. qobject::metaobject(),返回類關聯的元物件。

2. qmetaobject::classname(),在執行時返回類名。

3. qobject::setproperty()/qobject::property(),根據名稱動態的讀寫屬性。

4. qmetaobject::newinstance(),建立類的乙個例項。

qt強烈推薦:無論我們是否用到訊號槽、屬性等機制,所有qobject的子類都應該新增q_object巨集。

Qt元物件系統

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

Qt元物件系統

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

QT元物件系統

物件間的訊號和槽機制。執行時型別資訊和動態屬性系統。必須繼承自qobject 在類宣告區域新增q object巨集。用於啟動原物件特性。元物件編譯器 moc 為每個qobject的子類,提供實現元物件特性所必須的 反射機制指的是在執行時,能獲取任意乙個物件的所有型別 屬性和成員函式等資訊的一種機制。...