當信號函數和槽函數有參數時,使用舊語法寫信號/槽連接比新語法更容易發現錯誤。
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.”,但是不會定位到錯誤發生的具體的信號/槽連接處,給調試和尋找錯誤帶來了很大的不方便。
舊語法則會直接在信號/槽連接那里就報錯,便於發現問題。