調試時發現有些信號發射了,但是與之相關的槽函數沒有執行的原因,目前遇到的有:
1.語法錯誤
仔細檢查格式是不是對的,然後參數是否對應
2.一個類中的信號與另一個類中的槽函數
在SIGNAL()和SLOT()中的括號裏寫的直接就是槽和信號的名字,不用再加作用域。
例如類A和類B,A中的某個槽函數Slot_A()與B的信號Signal_B(),然後A在B中實例化爲a,那麼在B中connect(this, Signal_B(), &a, A::Slot_A() );這句話錯的蠻嚴重的。
應爲connect(this, SIGNAL( Signal_B() ), &a, SLOT( Slot_A() ));
3.有遇到一個:槽函數沒有聲明成public/protected... slots: ,而只聲明成一個函數了。
4.在a.exec()前加無限循環了。參見 Qt main函數a.exec()函數。
2017/11/20 今天有一個同事也遇到了這個問題,他是在Qt那個主的類中的一個槽函數有while死循環,而這個槽函數的信號一直被一個線程發射,所以orz。
待增。。。。