需求
qt 程序在运行过程中,报了警告 QObject::connect: Cannot queue arguments of type 'qintptr'
解决
跨线程的信号和槽中,如果出现自定义的类型,那么就会报这个问题。解决也很简单。
- 在使用这个自定义类的信号和槽的类源文件中,增加头文件
#include <QMetaType>
. - 在这个类的构造函数中添加
qRegisterMetaType
#include <QMetaType>
TcpSocket::TcpSocket(qintptr socketDescriptor, QObject *parent) :
QTcpSocket(parent), socketID(socketDescriptor)
{
qRegisterMetaType<qintptr>("qintptr");
this->setSocketDescriptor(socketDescriptor);
...
}
参考
QObject::connect: Cannot queue arguments of type “xxx"的解决方案