写了一个这样的信号
void caculateReady( QList<QString> adds, QList<double> hotV, QList<double> coolV);
编译时正常,运行时了现错误
Object::connection: Cannot queue arguments of type 'QList<QString>'
(Make sure 'QList<QString>' is registered using qRegisterMetaType().))
原因:自定义的数据类型作为信号槽参数传递的时候,需要使用 qRegisterMetaType() 函数对该参数进行注册
代码修改如下:
-
//添加文件引用
-
#include <QMetaType>
-
//注册参数类型
-
qRegisterMetaType<QList<QString> > ("QList<QString>");
这样,这个QList<QString>就可以作为信号参数来传递了
F1出现的help文档中的定义为:
-
int qRegisterMetaType ( const char * typeName )
-
//实例
-
qRegisterMetaType<MyClass>("MyClass");
qRegisterMetaType的返回值为自定义类型的ID
参考:http://blog.csdn.net/kusey/article/details/7995815