您好,登錄后才能下訂單哦!
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++源代碼文件。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。