我剛剛開始使用Qt,并注意到所有示例類定義都以宏Q_OBJECT作為第一行。此預處理程序宏的目的是什么?
3 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
1來自Meta-Object System的 Qt文檔
moc工具讀取C ++源文件。如果找到一個或多個包含Q_OBJECT宏的類聲明,它將生成另一個C ++源文件,其中包含每個這些類的元對象代碼。生成的源文件或者包含在類的源文件中,或者更通常地,被編譯并與類的實現鏈接。
2來自Q_OBJECT的 Qt文檔
Q_OBJECT宏必須出現在類定義的專用部分中,該類聲明其自身的信號和插槽,或者使用Qt的元對象系統提供的其他服務。
3從Qt文檔MOC
moc工具讀取C ++頭文件。如果找到一個或多個包含Q_OBJECT宏的類聲明,它將生成一個C ++源文件,其中包含這些類的元對象代碼。除其他外,信號和時隙機制,運行時類型信息和動態屬性系統還需要元對象代碼。
4從Qt 信號和插槽文檔
Q_OBJECT宏由預處理器擴展,以聲明由moc實現的幾個成員函數。如果在“對LcdNumber的vtable的未定義引用”的行中遇到編譯器錯誤,則可能已忘記運行moc或將moc輸出包括在link命令中。
- 3 回答
- 0 關注
- 1644 瀏覽
添加回答
舉報
0/150
提交
取消