[Qt]QObject::connect: Cannot queue arguments of type 'QString&'的解决方法
在主线程和子线程中,通过信号与槽发送QString,遇到
QObject::connect: Cannot queue arguments of type 'QString&'问题
错误代码:
connect(this,SIGNAL(emStart(QString&,int)),ySerialPort,SLOT(write(QString&,int)));
原因
不允许跨线程传递非const应用。
解决方法
就是要么是const引用,要么是值传递
正确代码
connect(this,SIGNAL(emStart(const QString&,int)),ySerialPort,SLOT(write(const QString&,int)));
或
connect(this,SIGNAL(emStart(QString,int)),ySerialPort,SLOT(write(QString,int)));
说明:
在同一线程内非const引用,进行传递,是没有问题的。
上述问题是在两个线程中,非const引用出的问题。