Qt編譯報錯:“Signal and slot arguments are not compatible.”當信號函數和槽函數帶參數時,建議使用舊語法寫信號槽連接。


當信號函數和槽函數有參數時,使用舊語法寫信號/槽連接比新語法更容易發現錯誤。

QT5新語法寫信號/槽連接,比如:

connect(Device::getInstance(), &Device::sig_sendData, this, &Tool::slot_receiveData);

舊語法寫信號/槽連接,比如:

connect(Device::getInstance(), SIGNAL(sig_sendData(QString,int)), this, SLOT(slot_receiveData(QString, int));

 當修改了信號/槽函數其中一個函數的參數類型,而未修改另一個函數的參數類型時,例如:

信號函數sig_sendData(QString, int)變成了sig_sendData(QString, QByteArray),槽函數的參數類型未做相應的修改。

新語法編譯時會報錯“Signal and slot arguments are not compatible.”,但是不會定位到錯誤發生的具體的信號/槽連接處,給調試和尋找錯誤帶來了很大的不方便。

舊語法則會直接在信號/槽連接那里就報錯,便於發現問題。


免責聲明!

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



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