Q_OBJECT宏的做用

The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define signals or slots 只有加入了Q_OBJECT,你才能使用QT中的signal和slot機制。 好比編寫事件接口等程序時,有時會出現以下問題: 在PC端成功編譯,但在開發板端卻顯示錯誤: QObject::connect: No such slot QWidget::*******() QObject::connect: (sender name: 'unnamed') QObject::connect: (receiver name: 'unnamed') 這時候,就必須在頭文件派生類的時候,首先像下面那樣引入Q_OBJECT宏: class MyMainWindow : public QWidget { Q_OBJECT ...... } QT中的moc? moc是QT的預編譯器,用來處理代碼中的slot,signal,emit,Q_OBJECT等。 moc文件是對應的處理代碼,也就是Q_OBJECT宏的實現部分,在官方文檔上有詳細說明,與其文件在同一目錄下。 今天項目不能編譯過去,最後和沒改動的解決方案比較了下發現原來是把Generated MOC Files裏面少了兩個moc**_xxx.cpp文件!!
相關文章
相關標籤/搜索