今天遇到了莫名其妙的编译错误,原因是我用QVariant设置一个自定义指针类型的Data,这时就需要Q_DECLARE_METATYPE(Type*)了,如果设置了Q_DECLARE_METATYPE(Type),Qt只能识别Type类型,而未能识别其指针类型!!! 另外自定义类型中一定要有默认构造函数,如果已经显式的定义了带有无默认参数的构造函数则需要另外写上默认构...
} Q_DECLARE_METATYPE(A::Test) 今天遇到了莫名其妙的编译错误,原因是我用QVariant设置一个自定义指针类型的Data,这时就需要Q_DECLARE_METATYPE(Type*)了,如果设置了Q_DECLARE_METATYPE(Type),Qt只能识别Type类型,而未能识别其指针类型!!! 另外自定义类型中一定要有默认构造函数,如果已经显式的定义了带有无默认...
针对你遇到的问题“type is not registered, please use the q_declare_metatype macro to make it known to Qt's meta-object system”,我们可以从以下几个方面进行解答和修复: 1. 理解q_declare_metatype宏的作用 q_declare_metatype宏用于在Qt的元对象系统中注册一个自定义类型,使得该类型可以通过Qt的信号...
error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system QVariant setValue的时候,如果把一个枚举类型直接赋值,会出现上述错误。 static_cast<int>转换后OK。
因为Q_DECLARE_METATYPE 是一个宏。借用一句话:“宏是万恶之源”。什么恶呢?就是,如果它的参数当中有逗号",",会被当成参数分隔符。 所以,当你试图这么写: [cpp]view plaincopy Q_DECLARE_METATYPE(QMap<QString, bool>); 你就会发现编译不过,并且抓狂了。
今天在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) 1. 2. 3. 4. 5. 这样就向Qt的元对象系统声明了MyStruct类型,使得它可以在信号 - 槽等机制中被正确处理。 Q_DECLARE_METATYPE用法 基本语法:Q_DECLARE_METATYPE(Type),其中Type是要声明的类型。这个类型可以是基本数据类型(如int、double等,虽然基本数据类型在Qt中通常已经被识...
Q_DECLARE_METATYPE 展开后是一个特化后的类 QMetaTypeId<TYPE> qRegisterMetaType 将某类型注册中 MetaType 系统中 二者的联系: QMetaTypeId<TYPE>的类中的成员包含对qRegisterMetaType的调用 我们知道类中的成员函数并不一定会被调用(即,该宏并不确保类型被注册到MetaType)。