Qt學習(1)

摘自:C++ GUI Qt4 編程(第二版),C++ GUI Programming with Qt4,Second Edition

Qt使用了獨創的“元對象系統”對C++進行了擴展。其中包括兩項關鍵技術:信號-槽以及內省(introspection)。內省功能對於實現信號和槽式必需的,並且允許應該用程序開發人員在運行時獲得有關QObject子類的“元信息”(meta-information),包括一個含有對象的類名以及它所支持的信號和槽的列表。這一機制也支持屬性(廣泛用於Qt設計師中)和文本翻譯(用於國際化)。並且它也爲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()和disconnect()這樣的QObject的城陽函數使用這些內省函數來完成它們的工作。


由於所有這些工作都是由qmake、moc和QObject自動處理的,所以Qt用戶很少需要考慮這些問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章