Q_DECLARE_METATYPE说明
在使用Qt进行应用程序开发时,经常要自定义数据类型,而且在需要的时候还要把这些数据放到QVariant中去。因为QVariant是一个接受绝大部分类型的数据类型。为了达到这个目的,就必须使用Q_DECLARE_METATYPE。
下面以一段简单的代码说明Q_DECLARE_METATYPE的用法和注意点。
#include <QtGui/QApplication> #include <QVariant> struct struct1 { int a; double b; }; struct struct2 { struct1 s; int c; }; Q_DECLARE_METATYPE(struct1) //struct1与struct2 谁先谁后,没有影响 Q_DECLARE_METATYPE(struct2) int main(int argc, char *argv[]) { QApplication a(argc, argv); struct1 v1 = {1, 2.0}; QVariant var1; var1.setValue(v1); if (var1.canConvert<struct1>()) //判断能否转化为相应类型 { struct1 v11 = var1.value<struct1>(); } struct2 v2 = {{2, 3.0}, 5}; QVariant var2; if (var2.canConvert<struct2>()) { var2.setValue(v2); struct2 v22 = var2.value<struct2>(); } return a.exec(); }
通过Q_DECLARE_METATYPE声明后,就可以让自定义的类型设置到QVariant。
(注:关于Q_DECLARE_METATYPE和Q_DECLARE_METATYPE相关,以后还会继续增加。。。)
posted on 2011-01-19 00:30 ActiveChange 阅读(10577) 评论(0) 编辑 收藏 举报