qt程序的函数如果都在主线程中,那么自定义的结构体是可以进行传递的。
例如
struct Student
{
QString name;
int ID;
}
//假设从窗体a传到窗体b,都在主线程中
connect(a,&A::sSendStudent,b,&B::receiverStudent);
//这样是可以进行传递的。
但是当不同的线程就不能进行传递。
会出现这个问题
QObject::connect: Cannot queue arguments of type 'Student'
解决方案
在发送信号的文件中加入
#include
然后在构造函数中加入:
qRegisterMetaType<Student>("Student");
仅作记录使用。