Qt::Q_DECLARE_METATYPE

简介

这个宏用来注册一个类(含默认构造、默认析构、拷贝构造函数)为QMetaType类型 ,注册后的类型可以作为QVariant的自定义类型。
这个宏应该放在类或者结构体外面的下面,也可以放在一个非公用引用的头文件里,在每次使用QVariant的时候引用该头文件。
想在信号队列、槽、 QObject’s property system中使用该类型,还得用qRegisterMetaType()注册该类型。

示例

  struct MyStruct
  {
      int i;
      ...
  };

  Q_DECLARE_METATYPE(MyStruct)

有命名空间, Q_DECLARE_METATYPE() 宏应该放在命名空间外面

  namespace MyNamespace
  {
      ...
  }

  Q_DECLARE_METATYPE(MyNamespace::MyStruct)

Since MyStruct is now known to QMetaType, it can be used in QVariant:

  MyStruct s;
  QVariant var;
  var.setValue(s); // copy s into the variant

  // retrieve the value
  MyStruct s2 = var.value<MyStruct>();

注意

一些类型是自动注册的,不在需要用此宏去申明类型

  1. 继承自QObject的指针类型
  2. QList, QVector, QQueue, QStack, QSet or QLinkedList中已经注册的元类型T
  3. QHash < T1, T2 >, QMap< T1, T2 > or QPair< T1, T2 > 中已经注册的元类型T1 T2
  4. QPointer< T >, QSharedPointer< T >, QWeakPointer< T > 继承自QObject的类
  5. Q_ENUM 或 Q_FLAG注册的枚举类型
  6. 包含Q_GADGET macro的类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值