文章目录

更多参见
QT基础与实例应用目录

QVariant类类似于C++的联合数据类型,既可以保存很多QT类型的值,包括QColor、QBrush、QFont、QPen、QRect、QString和QSize等,也可以存放QT容器类型值

GitHub链接 :GitHub

    QVariant v{709};qDebug()<<v.toInt(); // 709QVariant w{"Hello World"};qDebug()<<w; // QVariant(QString, "Hello World")qDebug()<<w.toString(); // "Hello World"QMap<QString,QVariant>map{{"int",709},{"double",3.14}};map["string"] = "Hello World";map.insert("color",QColor(255,0,0));// 调用相应的转换函数qDebug()<<map["int"]<<map["int"].toInt(); // QVariant(int, 709) 709qDebug()<<map["double"]<<map["double"].toDouble(); // QVariant(double, 3.14) 3.14qDebug()<<map["string"]<<map["string"].toString(); // QVariant(QString, "Hello World") "Hello World"qDebug()<<map["color"]<<map["color"].value<QColor>(); // QVariant(QColor, QColor(ARGB 1, 1, 0, 0)) QColor(ARGB 1, 1, 0, 0)QStringList sl;sl << "A" << "B" << "C" << "D";QVariant vt{sl};if(vt.type()==QVariant::StringList) {auto list = vt.toStringList();for (int i=0;i<list.size();++i ) {qDebug()<<list.at(i);}}

C++的各种初始化方式

qDebug()<<map["color"]<<map["color"].value<QColor>(); QVariant变量中保存了一个QColor对象,并使用模板QVariant::value()还原为QColorQVariantQtCOre模块的类,没有为QtGui模块中的数据类型,比如QColorQImageQPixmap等提供转换函数,需要使用QVariant::value()或者QVariantValue()

QVariant::type()函数返回存储在QVariant变量中的值得数据类型。QVariant::StringList是一个QVariant::type()枚举类型的变量。

这个枚举可以查看源码qvariant.h

    enum Type {Invalid = QMetaType::UnknownType,Bool = QMetaType::Bool,Int = QMetaType::Int,UInt = QMetaType::UInt,LongLong = QMetaType::LongLong,ULongLong = QMetaType::ULongLong,Double = QMetaType::Double,Char = QMetaType::QChar,Map = QMetaType::QVariantMap,List = QMetaType::QVariantList,String = QMetaType::QString,StringList = QMetaType::QStringList,ByteArray = QMetaType::QByteArray,BitArray = QMetaType::QBitArray,Date = QMetaType::QDate,Time = QMetaType::QTime,DateTime = QMetaType::QDateTime,Url = QMetaType::QUrl,Locale = QMetaType::QLocale,Rect = QMetaType::QRect,RectF = QMetaType::QRectF,Size = QMetaType::QSize,SizeF = QMetaType::QSizeF,Line = QMetaType::QLine,LineF = QMetaType::QLineF,Point = QMetaType::QPoint,PointF = QMetaType::QPointF,RegExp = QMetaType::QRegExp,RegularExpression = QMetaType::QRegularExpression,Hash = QMetaType::QVariantHash,EasingCurve = QMetaType::QEasingCurve,Uuid = QMetaType::QUuid,
#if QT_CONFIG(itemmodel)ModelIndex = QMetaType::QModelIndex,PersistentModelIndex = QMetaType::QPersistentModelIndex,
#endifLastCoreType = QMetaType::LastCoreType,Font = QMetaType::QFont,Pixmap = QMetaType::QPixmap,Brush = QMetaType::QBrush,Color = QMetaType::QColor,Palette = QMetaType::QPalette,Image = QMetaType::QImage,Polygon = QMetaType::QPolygon,Region = QMetaType::QRegion,Bitmap = QMetaType::QBitmap,Cursor = QMetaType::QCursor,KeySequence = QMetaType::QKeySequence,Pen = QMetaType::QPen,TextLength = QMetaType::QTextLength,TextFormat = QMetaType::QTextFormat,Matrix = QMetaType::QMatrix,Transform = QMetaType::QTransform,Matrix4x4 = QMetaType::QMatrix4x4,Vector2D = QMetaType::QVector2D,Vector3D = QMetaType::QVector3D,Vector4D = QMetaType::QVector4D,Quaternion = QMetaType::QQuaternion,PolygonF = QMetaType::QPolygonF,Icon = QMetaType::QIcon,LastGuiType = QMetaType::LastGuiType,SizePolicy = QMetaType::QSizePolicy,UserType = QMetaType::User,LastType = 0xffffffff // need this so that gcc >= 3.4 allocates 32 bits for Type};

希望我的文章对于大家有帮助,由于个人能力的局限性,文中可能存在一些问题,欢迎指正、补充!

QT基础之QVariant类相关推荐

  1. QT基础之一文介绍QPainter绘制基础图形(画笔画刷设置,填充铺展渐变效果)

    更多参见 QT基础与实例应用目录 代码链接 GitHub链接 :QPainterSimpleExample 介绍 结合实例介绍如何利用QPainter绘制各种图形,可绘制不同形状,使用不同画笔颜色.画 ...

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

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

  3. QT QVariant类数据类型使用

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

  4. QT基础之QToolBox工具盒类

    文章目录 简介 代码链接 代码展示 更多参见 QT基础与实例应用目录 简介 QToolBox提供一种列状的层叠窗体,QToolButton提供了一种快速访问命令或选择项的按钮,通常在工具条中使用.示例 ...

  5. qt -- QVariant 类

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

  6. QT/C++从新手到老手系列之QT基础篇-李浩林-专题视频课程

    QT/C++从新手到老手系列之QT基础篇-1620人已学习 课程介绍         本系列课程励志于带领你学习QT5/C++,从开发环境(QTCreator和VS2013两种)搭建到实际项目实战,从 ...

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

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

  8. Qt学习之Qt基础入门(下)

    1. 前言 前两篇博客简单的阐述了一下Qt的入门用法,这篇博客继续跟着视频学习. Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) ...

  9. Qt学习之Qt基础入门(中)

    1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门( ...

最新文章

  1. DayDayUp:今天早上看到一条朋友圈——《吃苦与穷的深刻认知》
  2. Microsoft.AspNet.Identity 自定义使用现有的表—登录实现
  3. python用筛选法求解小于n的所有素数_用筛选法求解n以内的所有素数
  4. 安装pytorch1.10.0/cu111时报错:no matching distribution found for torchvision==0.11.0+cu111
  5. mysql 标识列是什么,mysql中标识列是什么意思有什么用
  6. 【绘画素材】日系插画“人物表情”素材参考!告别脸部僵硬~
  7. 怎么把ppt文字大小设置一致_PPT滚动数字原来如此简单
  8. AutoCAD料表提取到Excel方法介绍
  9. [多图]非线性格兰杰因果检验,eveiws详细实现步骤
  10. 鸟人的Android揭秘(7)——搭建Android SDK开发环境(三)
  11. 关于组装微型计算机的叙述不正确的是,计算机与交互式白板通过USB数据线物理连接后,还要正确安装(),这样才能正常使用。...
  12. 学习笔记之Object.getPrototypeOf()方法
  13. TiKV 监控指标详解
  14. ant编译警告处理:主版本 52 比 51 新,此编译 器支持最新的主版本。
  15. 计算机单片机考试题库,单片机基础知识试题题库(含答案).pdf
  16. Bugku:web矛盾
  17. 用Python统计中英文词频
  18. python中判断真子集的符号_使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作_______。...
  19. 送书!狼书三卷终大成,狼叔亲传Node神功
  20. 缓存击穿,穿透,雪崩

热门文章

  1. Kafka集群部署与测试
  2. 墨者网络安全——投票常见漏洞分析溯源
  3. Python游戏编程实践1:鲁蒂亚的世界
  4. ctf.show web入门(信息搜集) 1~20
  5. 苹果首款自研PCM1芯片居然吊打因特尔 !这款苹果M1芯片能“擎天”
  6. css3实现div的凸起或凹陷效果
  7. 如何在 fedora 上进行手机投屏
  8. 5 steps to land a data science job in just 6 months :)
  9. 定义在N个元素上的集合A上的等价关系一共有多少种
  10. Google Chrome谷歌浏览器无法同步gmail的解决方案