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.”,但是不会定位到错误发生的具体的信号/槽连接处,给调试和寻找错误带来了很大的不方便。

旧语法则会直接在信号/槽连接那里就报错,便于发现问题。

posted @ 2020-11-11 14:46  绿筱  阅读(3537)  评论(0编辑  收藏  举报