亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Q_OBJECT宏做什么?為什么所有Qt對象都需要此宏?

Q_OBJECT宏做什么?為什么所有Qt對象都需要此宏?

C++
aluckdog 2019-11-29 10:46:24
我剛剛開始使用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命令中。


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 1644 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號