QT元對象系統簡介

 QT元對象系統
    qt的主要成就之一就是使用了一種機制對C++進行了擴展,而且使用這種機制建立了獨立的軟件組件,這些組件能夠綁定在一塊兒,但任何一個組件對於它所要鏈接的組件的狀況一無所知,這種機制就稱爲元對象系統,它提供了關鍵的兩個技術,信號和槽,以及內省。
     內省功能對於實現信號和槽是必須的,而且允許開發人員在運行時獲取有關QObject子類的「元信息」,包括一個含有對象的類名以及它所支持的信號和槽的列表,這一機制也支持屬性和文本翻譯,而且爲Qtscript模塊奠基了基礎,標準的C++沒有對qt的的元對象系統鎖須要的動態元信息提供支持,qt是經過一個獨立的moc工具解決這個問題,moc解析Q_OBJECT類的定義而且經過c++函數來提供可供使用的信息,猶豫moc使用純c++來實現全部功能,因此qt的元對象系統能夠在任意c++編譯器上工做。
   這一機制是這樣工做的:
       Q_OBJECT宏聲明瞭每個QObject子類中必須實現的一些內省函數:metaobject,tr(),qt_metacall(),以及一些其它函數。Qt的moc工具生成了用於由Q_OBJECT聲明的全部函數和全部信號的實現。像connect()和disconnnect()這樣的QOBJECT成員函數使用這些內省函數來完成他們的工做。這些工做都是由qmake,moc和QObject自動處理的,因此不多須要再去考慮這些事情,若是好奇能夠參考QMetaObject類的文檔和由moc生成的c++源代碼文件。


c++

相關文章
相關標籤/搜索