当信号函数和槽函数有参数时,使用旧语法写信号/槽连接比新语法更容易发现错误。
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.”,但是不会定位到错误发生的具体的信号/槽连接处,给调试和寻找错误带来了很大的不方便。
旧语法则会直接在信号/槽连接那里就报错,便于发现问题。