Qt QVariant

  • QVariant 介绍
  • 自定义类型转换为 QVarient 使用

QVariant 介绍

QVariant 支持内置的 QMetaType 类型,可以和这些类型之间互相转换。

自定义类型转换为 QVarient 使用

有些函数的参数为 QVariant,如果要使用自定义的结构体或者枚举作为参数,则需要用 Q_DECLARE_METATYPE 宏声明:

enum CusType
{TYPE_ONE = 1,TYPE_TWO = 2,TYPE_THREE = 3
};Q_DECLARE_METATYPE(CusType)void MainWindow::dealType()
{bool ok = false;//QVariant 转换为 QMeataType类型QVariant v1(123);qDebug() << "v1.typeName = " << v1.typeName() << ", canConvert<int>() = " << v1.canConvert<int>()<< ", int  = " << v1.toInt(&ok) << ", ok = " << ok;QVariant v2("123");qDebug() << "v2.typeName = " << v2.typeName() << ", canConvert<int>() = " << v2.canConvert<int>()<< ", int  = " << v2.toInt(&ok) << ", ok = " << ok;QVariant v3("123s");qDebug() << "v3.typeName = " << v3.typeName() << ", canConvert<int>() = " << v3.canConvert<int>()<< ", int  = " << v3.toInt(&ok) << ", ok = " << ok;QString str3 = v3.value<QString>();QVariant v4(tr("123"));qDebug() << "v4.typeName = " << v4.typeName() << ", canConvert<int>() = " << v4.canConvert<int>()<< ", int  = " << v4.toInt(&ok) << ", ok = " << ok;//自定义类型转换为 QVariantQVariant v5 = QVariant::fromValue(CusType::TYPE_ONE);qDebug() << "v5.typeName = " << v5.typeName() << ", canConvert<int>() = " << v5.canConvert<int>()<< ", int  = " << v5.toInt(&ok) << ", ok = " << ok;//QVariant 转换为 自定义类型int i5 = v5.value<CusType>();qDebug() << "i5 = " << i5;
}

输出:

可以看到 v3 ,转换为 int 类型失败,但 v3.canConvert<int>() 结果为 true

Qt QVariant相关推荐

  1. QT QVariant类数据类型使用

    QT QVariant类数据类型使用 1. QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++ 共用体 union ,一个QVariant 对象,一次只能保存一个单一类型的值. ...

  2. Qt QVariant详细用法

    一.简介 QVariant可以存储各种数据类型,QVariant行为类似于C/C++的union, 但在Qt中比union强大很多, QVariant内置支持所有QMetaType::Type里声明的 ...

  3. qt -- QVariant 类

    1.QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++共用体 union,一个QVariant 对象,一次只能保存一个单一类型的值.该类封装了 Qt 中常用的类型,对于 QVa ...

  4. 【QT】Qt调用OCX控件详解

    OCX控件的注册 首先,调用ocx控件需要保证ocx本身是已经注册了的.如果没有注册请先按"Win+R"输入"cmd"打开命令窗口.然后输入regsvr32 + ...

  5. pyrcc5将resources.qrc转换成py文件

    需要通过pyrcc5将resources.qrc转换成py文件,并在主程序引入. pyrcc5 -o resources_rc.py resources.qrc 用python3+PyQt5改写Pyt ...

  6. QT学习:容器类及QVariant类

    Qt提供了一组通用的基 于模板的容器类.对比C++的标准模板库中的容器类,Qt 的这些容器更轻量.更安全并且更容易使用. 存储在Qt容器中的数据必须是可赋值的数据类型,也就是说,这种数据类型必须提供一 ...

  7. Qt学习之路(51): QByteArray和QVariant

    转:http://devbean.blog.51cto.com/448512/276235 前面我们在介绍QString的最后部分曾经提到了QByteArray这个类.现在我们就首先对这个类进行介绍. ...

  8. Qt/C++ 借助QVariant实现可存储通用类型的容器

    1. 背景 在项目开发过程中,我们可能会遇到这么一种场景:某个或某几个软件组件可以产生许多不同类型的数据,无论是出于性能的考虑,或者是接口简洁性的考虑,这些数据需要被一次性塞到一个类似于数据库的数据容 ...

  9. QT基础之QVariant类

    文章目录 更多参见 QT基础与实例应用目录 QVariant类类似于C++的联合数据类型,既可以保存很多QT类型的值,包括QColor.QBrush.QFont.QPen.QRect.QString和 ...

最新文章

  1. go kegg_零基础 GO 与 KEGG 分析,手把手教你用多种途径实现!
  2. 黄东旭:Cloud-Native 的分布式数据库架构与实践
  3. Python NumPy-快速处理数据
  4. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
  5. 【linux】Centos 初始安装后开启网络以及配置静态IP
  6. 李彦宏纳猛将,技术才是百度的未来
  7. Ecliipse-Alt+斜杠(/)不提示
  8. 谈360下拉词360下拉框的优势及360搜索推广方法有哪些?
  9. bzoj 1023: [SHOI2008]cactus仙人掌图(仙人掌求直径)
  10. 解决Jquery Kendo.xxx is not a function 的方法
  11. Dubbox服务的消费方配置
  12. 使用stm32控制驱动步进电机
  13. 软件图形用户界面设计
  14. el-tree实现类似windows文件列表,并支持折叠、展开和重命名
  15. 免疫的特异性和非特异性
  16. 一名开源工程师的自白
  17. 解读:信贷业务风控逾期指标及风控模型评估指标
  18. 2018/7/10功能点解读
  19. 关闭mybatis 日志
  20. 你找的网络安全系列书籍,都在这了

热门文章

  1. 此远程计算机不支持remoteapp,[Tips] 使用 RemoteApp 方式访问远程桌面上的应用程序...
  2. 表面看是营销书,其实是励志书——Leo鉴书77
  3. Python Split函数升级版
  4. Css 实现边界 凹陷 状态
  5. php 0.01毫米对折,全球首创:0.01毫米最薄柔性显示屏,手机可以折叠成腕表!
  6. Linux(Centos8)防火墙设置
  7. vue blob流下载zip文件,下载后包文件显示文件损坏
  8. 记CentOS7一个百万PV商城的测试
  9. 怎么使用代理IP上网 如何设置代理服务器
  10. 有小数点的补码怎么算_小数和分数的原码补码