error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt’s meta-object system 网上大部分解答都是添加:Q_DECLARE_METATYPE(type) 可我的代码中明明就有:Q_DECLARE_METATYPE(UserTest) 三、问题解决 非常感谢 BloodRose 给出的解答 今...
} Q_DECLARE_METATYPE(A::Test) 今天遇到了莫名其妙的编译错误,原因是我用QVariant设置一个自定义指针类型的Data,这时就需要Q_DECLARE_METATYPE(Type*)了,如果设置了Q_DECLARE_METATYPE(Type),Qt只能识别Type类型,而未能识别其指针类型!!! 另外自定义类型中一定要有默认构造函数,如果已经显式的定义了带有无默认...
Q_DECLARE_METATYPE(Text);//声明该类 在connect连接信号槽之前调用RegisterMetaType<Text>("Text");告诉QT,Text类型的别名为"Text",当然也可以改为其他别名. 比如: intmain(intargc,char*argv[]) { QApplication a(argc, argv); Widget w; qRegisterMetaType<Text>("Text"); MyThread t; QObject::connec...
今天在Qt里使用树控件的时候,绑定自定义节点取数据会报以下错误: Type is not registered,pleaseusethe Q_DECLARE_METATYPE macro to make it known to Qt'smeta-object system 用以下方法解决: Q_DECLARE_METATYPE(你的自定义数据类名) 即可。
报错代码 1 2 3 const QCameraInfo &cameraInfo ... QVariant::fromValue(cameraInfo) 原因 QVaiant 不能识别自定义类型和其他非 QMetaType 内置类型, 而 QCameraInfo 是非 QMetaType 内置类型,因此使用QVariant::fromValue(cameraInfo)之前,需要使用Q_DECLARE_METATYPE宏对 QCameraInfo 进行声明。
一般来说,先使用Q_DECLARE_METATYPE进行类型声明。这个声明通常放在头文件中,在自定义类型的定义之后。例如: // mystruct.h struct MyStruct { int value; }; Q_DECLARE_METATYPE(MyStruct) 1. 2. 3. 4. 5. 然后,在需要使用该类型进行跨线程信号 - 槽通信或者在动态加载的库中使用该类型等场景下,使用...
#include<QString>#include<QMetaType>#include<QDebug>classText{public:Text(){qDebug()<<"Text";}Text(constText&t){this->m_str=t.m_str;}QString m_str;};Q_DECLARE_METATYPE(Text);//声明该类 在connect连接信号槽之前调用RegisterMetaType<Text>("Text");告诉QT,Text类型的别名为"Text",当然...
在Qt中信号和槽使用自定义的结构时,运行的时候发现报错不能识别结构体 解决办法: 一定要将自定义结构体定义为typedef struct 使用Q_DECLARE_METATYPE(结构体名),将结构体注册为元对象 使用QVariant打包数据并发送 在槽函数中将QVariant解包成自定义的结构体,即可使用 例子: 在datainfo.h文件中这样定义结构体 ...
。也就是说,QVariant提供了一组预定义的构造函数。不能使用Q_DECLARE_METATYPE宏添加新的宏。
简介:Qt信号槽使用结构体作为参数:Q_DECLARE_METATYPE和qRegisterMetaType的作用 问题由来 定义一个结构体 struct myStruct { int a; float b; }; 通过信号槽传递该结构体 connect(this, SIGNAL(m_signal(myStruct)), this, SLOT(m_slot(myStruct))); ...