2009-09-07 29 views
21

我有我的班級X,它繼承了Qt的類Base。我宣佈並在我的類X中定義了void mySlot()插槽,並將一些信號連接到X構造函數中的此插槽。但是,在運行我的程序時,我收到一條錯誤消息,指出在Base類中沒有void mySlot()這樣的插槽。爲什麼Qt在基類中尋找我的插槽而不是派生的?

爲什麼Meta Object Compiler(moc)生成的代碼在基類中尋找我的插槽而不是在我的(派生的)類中?

回答

45

您是否在派生類中添加了Q_OBJECT宏?

6

從#qt irc頻道

  1. 確保Q_OBJECT宏存在於所有的QObject派生類的定義。
  2. 確保你只在你的頭文件中聲明你的QObject派生類。
  3. 確保所有頭文件都列在HEADERS =列表的.pro文件中。
  4. 每次將Q_OBJECT添加到其中一個類或修改.pro文件時,運行qmake。
相關問題