Qt报错整理-Q_DECLARE_METATYPE

1、Q_DECLARE_METATYPE

进行数据绑定时候,出现这个bug错。

error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt。

原因:使用了QVariant::fromValue(user),QVariant对象使用前需进行类型声明。

如下:对定义的类型进行声明

Q_DECLARE_METATYPE(类型)

// 用户信息
 
struct User : QObjectUserData {
 
int nID; // ID
 
QString strName; // 用户名
 
};
 
 
// 语言
 
typedef enum{
 
UI_ZH, // 中文
 
UI_EN // 英文
 
} LANGUAGE;
 
 
Q_DECLARE_METATYPE(User)
 
Q_DECLARE_METATYPE(LANGUAGE)

备注:

遇到了莫名其妙的编译错误,原因是我用QVariant设置一个自定义指针类型的Data,这时就需要Q_DECLARE_METATYPE(Type*)了,如果设置了Q_DECLARE_METATYPE(Type),Qt只能识别Type类型,而未能识别其指针类型!!!,如下实例 必须为定义得数据类型 而不能是指向数据类型得指针。

QVariant::fromValue(实例)

你可能感兴趣的:(c++,qt,c++)