简介

这个宏用来注册一个类(含默认构造、默认析构、拷贝构造函数)为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 valueMyStruct 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的类

Qt::Q_DECLARE_METATYPE相关推荐

  1. Qt文档阅读笔记-关于Q_DECLARE_METATYPE原理以及使用

    目录 官方解释 博主补充小栗子 最简单的关于Q_DECLARE_METATYPE的例子: 关于qRegisterMetaType的栗子 官方解释 Q_DECLARE_METATYPE(Type) 这个 ...

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

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一.Q_DECLARE_METATYPE是什么? 示例代码 二.编译错误 三.问题解决 四.源码下载 五.运行效果 前言 一.Q_DECLARE_M ...

  3. Qt中注册定义类型qRegisterMetaType和Q_DECLARE_METATYPE的总结

    概述 如果想要我们自己自定义的类型也可以有 Qt 自己类型的功能的话,就必须注册我们的类型到 Qt 中,这样才可以在信号和槽的通讯机制中使用我们的自定义的类型. Q_DECLARE_METATYPE ...

  4. QT的QDBusArgument类的使用

    详细说明 QDBusArgument类用于编组和解组D-Bus参数. 该类用于通过D-Bus将参数发送到远程应用程序并将其接收回来. D-Bus基于一些原始类型及其关联提供了可扩展的类型系统. 有关类 ...

  5. 【Qt】 Qt中实时更新UI程序示例

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 实时更新UI(非信号与槽) 04. 实时更新UI(信号与槽) 05. 源码下载 06. 附录 01. 概述 Qt在运行时会 ...

  6. 6、Qt Meta Object system 学习

    原文地址:http://blog.csdn.net/ilvu999/article/details/8049908 使用 meta object system 继承自 QOject 类定义中添加 Q_ ...

  7. QT之Variant

    QVariant识别类型的注册 QVariant识别类型的注册 QVariant为一个万能的数据类型--可以作为许多类型互相之间进行自动转换.将C++变为弱数据类型成为可能--也是许多控件中用户定义数 ...

  8. QT 动态创建对象(第一种方法)

    在我继续一系列的Qt数据序列化文章之前,有一个相对重要的需要提及的话题,那就是:基于类名动态创建类对象的能力. 假定现在我们要创建一系列的形状,形状是一个抽象类,实际类是存储在一个列表中的各种各样的派 ...

  9. Qt自定义数据类型注册meta-object system

    在Qt项目开发过程中,有时候会碰到需要使用自定义数据类型作为信号或者槽的参数进行数据传输,由于信号或者槽中的参数必须为Qt meta-object 系统中能够识别的参数,但是自定义数据类型仅仅只是程序 ...

最新文章

  1. ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush
  2. 大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?
  3. 谷歌和 Facebook 是如何给工程师定职级和薪水的?
  4. bat 复制文件夹_怎么生成电脑上文件夹的目录结构
  5. Windows编程初步(一)
  6. Java抽象类、接口、类的特殊成员
  7. c语言中八进制转换成十进制数,C语言中的二进制、八进制、十进制之间的转换...
  8. HTML5公式插件,在HTML5中使用MathML数学公式
  9. 3_03 蛇形填数(数组)
  10. 中国节能电梯市场趋势报告、技术动态创新及市场预测
  11. 力扣-606. 根据二叉树创建字符串
  12. shell编程规范与变量
  13. Android 自定义view实现签到功能
  14. 无法启动Windows安全中心服务怎么办
  15. 2021-03-11 Android 异常情况下长按power按键10s关机或者重启
  16. 【第三方API】顺丰API调用总结-java
  17. 写一个可以一键统一调整word文档格式的程序
  18. 理查和马文价值导向选股法则!
  19. 数据可视化分析教学课件——FineBI实验册节选====活动分析
  20. 视觉检测在激光打码字符检测上的检测案例

热门文章

  1. 【软件测试】什么软件测试,软件测试和研发的区别
  2. matlab读取声音文件
  3. 儿童学习桌好吗?与普通书桌相比怎么样
  4. wps字体缺失,问题
  5. Git版本控制管理——diff
  6. 被iPhone4电死空姐丈夫回应:充电器是原装
  7. DFS DBS算法
  8. JavaScript高级编程设计(第三版)——第二章:在html中使用javaScript
  9. Android神奇“控件”-----RemoteViews
  10. 2014 acm亚洲区域赛(北京)总结