写了一个这样的信号
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.youkuaiyun.com/kusey/article/details/7995815
当使用自定义数据类型如QList<QString>作为QT信号和槽的参数时,需要通过qRegisterMetaType()注册该类型以避免运行时错误。不注册会导致编译成功但运行时报错。解决方法是在代码中正确注册QList<QString>,从而使其可以用于信号参数的传递。
5495

被折叠的 条评论
为什么被折叠?



