QT 什麼是Qt元物件系統

2021-06-28 05:44:30 字數 915 閱讀 7418

qt元物件系統,即meta object system(mos),提供了大家熟知的用於物件間資訊傳遞的訊號與槽機制,執行時型別資訊和動態屬性系統。

mos基於三件法寶:

一是qobject類,是所有qt物件的基類,可以很好的使用mos。

二是q_object巨集,在類private部分宣告,用於啟用mos特性,例如動態屬性、訊號與槽。

三是元物件編譯器,即meta object compiler(moc),為qobject的派生類提供了必要的**以實現mos特性。例如example.h中宣告了example類,繼承自qobject類且使用了q_object巨集,那麼moc就會找到用q_object巨集宣告的這個example類,然後生成乙個moc_example.cpp檔案,記錄了相關的mos**。

mos中除了訊號與槽這個核心外,還有一些實用的東西:

1、qobject::metaobject(),返回當前類的元物件資訊,是個qmetaobject指標;

qobject::staticmetaobject也可以獲取當前類的元物件資訊,型別是qmetaobject。

2、qobject::inherits(),判斷當前物件例項的類繼承關係。

3、qobject::tr(),qt語言國際化,返回型別是qstring。

4、qobject::property()/setproperty(),通過屬性名動態獲取/修改屬性值。

5、qmetaobject::classname(),執行時返回類名,返回型別是char*。

6、qmetaobject::newinstance(),構造乙個新的例項。

7、qobject_cast(),動態型別轉換,類似於標準c++的dynamic_cast(),不同的是它不需要rtti(run time type information)且不受動態庫的限制。

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.編譯器 元物件編譯...