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++源代碼文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM