作者:穆煜,華清遠見嵌入式學(xué)院講師。
Qt的元對象系統(tǒng)是用來處理對象間通信的信號和槽,它運行信息類型和動態(tài)屬性。Qt的元對象系統(tǒng)包括以下3個部分的內(nèi)容:
(1)QObject類;
(2)類聲明私有段中的Q_OBJECT宏;
(3)元對象編譯器
元對象編譯器讀取C++源文件時,如果發(fā)現(xiàn)在文件中類的聲明中含有Q_OBJECT宏,元對象編譯器就會給含有Q_OBJECT宏的類生成另一個含有元對象代碼的C++源文件,這個生成的源文件必須與這個類的實現(xiàn)一起編譯和鏈接。
QObject中的元對象代碼除了提供對象間通信的信號和槽以外,還可實現(xiàn)其他特征。
(1)className( )函數(shù)在運行時以字符串返回類的名稱,不需要C++編譯器中的本地運行類型信息的支持。
(2)inherits( )函數(shù)返回的對象是一個繼承于QObject繼承樹中一個特定類的實例。
(3)tr( )和trUtf8( )兩個函數(shù)是用于國際化中的字符串翻譯。
(4)setProperty( )和property( )兩個函數(shù)是用來通過名稱動態(tài)設(shè)置而獲得對象屬性。
使用QObject作為基類而不使用Q_OBJECT宏和元對象代碼是可以的,但是如果Q_OBJECT宏沒有被使用,那么這個類聲明的信號和槽,以及其他特征描述都不會被調(diào)用。一般建議在QObject的所有子類中使用Q_OBJECT宏,而不管它們是否使用了信號與槽。
“本文由華清遠見http://www.embedu.org/index.htm提供”
來源:華清遠見0次