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文件!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM