笔者遇到的问题如标题,经排查,信号和槽函数的定义没有问题,输入参数的类型也是一致的,也使用了connect函数连接,但是发送信号以后没有执行槽函数,原因出在connect语句,错误示范:
cpp
connect(this, SIGNAL(sig_BackinfoTranspond),
this, SLOT(slot_backinfoTranspond));
错误原因:在使用 SIGNAL() 和 SLOT() 宏时,必须写出完整的参数类型,否则 Qt 无法匹配!
正确的语句:
cpp
connect(this, SIGNAL(sig_BackinfoTranspond(quint8,QTcpSocket*)),
this, SLOT(slot_backinfoTranspond(quint8,QTcpSocket*)));
有时候第二种语法也会导致无法执行槽函数,可以改为下面的Qt5的新式语法:
cpp
connect(this, &MyClass::updateTemperatureUI,this, &MyClass::updateTempDisplay);