Qt笔记之Q_DECLARE_METATYPE(Type)

摘要:
使用canConvert()函数检查数据是否可以转换为所需的数据类型。CanConvert()convert:convert(inttargetTypeId)将数据转换为特定类型。当返回值为true时,转换成功。要获取数据的值,请使用To.T()函数。类型(“MyClass”):destroy(id:})。但是,如果您希望在通用数据类QVariant中使用用户定义的类;

首先看一看QVariant这个类,我们可以把它当做一个万能数据类型,需要的时候能转换为一种特定的类型。
使用canConvert()函数检查是否能转换为你想要的数据类型,结构为:bool QVariant::canConvert() const,返回值为布尔型,为真时表示可以转换相应的类型。
使用bool QVariant::convert(int targetTypeId)将数据转换为特定类型,返回值为真时表示转换成功。
要获得数据的值时使用to.T()函数即可,返回一个数值。
下来看看Qt元类型,QMetaType Class这个类管理元对象系统的类,看了官方的英文文档,我是这样理解的,它可以给一个自定义的类起一个id,然后在创建一个指向自定义类的指针,可以随时随地的动态删除和添加,源码如下:


  int id = QMetaType::type("MyClass");
  if (id != QMetaType::UnknownType) {
      void *myClassPtr = QMetaType::create(id);
      ...
      QMetaType::destroy(id, myClassPtr);
      myClassPtr = 0;
  }

但如果你想使一个自定义的类能够在万能数据类QVariant中使用,就得使用Q_DECLARE_METATYPE(Type)宏进行修饰,其中你的类必须包含该类型必须有公有的 构造、析构、复制构造 函数,如果想在(queued)信号和槽系统中使用或者想在QObject的属性系统中使用,就必须使用qRegisterMetaType()这个函数注册到元对象系统中,这个在qml中调用C++时常用到。

免责声明:文章转载自《Qt笔记之Q_DECLARE_METATYPE(Type)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇谈谈工作上的杂事ts转js 并压缩下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)

0x00 漏洞描述Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003、windows2008、windows2008 R2、windows xp系统都会遭到攻击,该服务器漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的。这个漏洞是今年来说危害严重性最大的漏洞,跟之前的勒索,永恒之蓝病毒差...

关于linux系统时区的查看-修改与配置

Linux系统的时区在安装系统时,就会要求配置,或者有一个默认的配置 时区直接影响OS层的时间显示,尤其date命令显示,或者date命令进行时间转换计算时,也会有影响 1、如果查看当前系统配置的时区(通过date命令,或者查看/etc/localtime软链接可心查询到): 2、要更改 Linux 系统时区首先得获知你所当地时区的 TZ 值,    ...

Windows server 2008普通用户不能远程登录问题

1、查登录权限   如果文件服务器没有为用户授权,那么用户自然就不能远程登录服务器系统了,为此笔者决定先仔细检查一下文件服务器系统是否为自己使用的登录账号,授予了远程登录权限。在进行这种检查时,笔者先是在文件服务器本地以系统管理员身份登录进去,依次单击该系统的“开始”/“程序”/“管理工具”/“服务器管理器”命令,打开文件服务器系统的管理器控制台界面;从...

DEP(数据执行保护)介绍

DEP - 数据执行保护的缩写,Data Execution Prevention。 数据执行保护 (DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2、 Microsoft Windows Server 2003 Service Pack 1...

开发时javascript 文件调试 chrome 浏览器本地缓存处理

chrome 浏览器 javascript 文件缓存处理 调试一体项目时,js文件需要经常刷新,通过强制刷新全页面重新加载是非常恶心的,我们测试填写的很多数据都需要重新填一遍,当然我们可以写个函数快速填充数据,但是还是不够通用。 尽管我们在新的标签页面请求js,发现js文件已经刷新了。但是当前页面使用的js还是没变...... 解决方案 在开发者模式下停用...

charles——OpenSSL——安卓7.0以上https抓包

参考1:https://blog.csdn.net/djzhao627/article/details/102812783?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=di...