Q_DECLARE_METATYPE说明

Q_DECLARE_METATYPE说明

在使用Qt进行应用程序开发时,经常要自定义数据类型,而且在需要的时候还要把这些数据放到QVariant中去。因为QVariant是一个接受绝大部分类型的数据类型。为了达到这个目的,就必须使用Q_DECLARE_METATYPE。

 

下面以一段简单的代码说明Q_DECLARE_METATYPE的用法和注意点。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值