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(实例)