Qt容器QVariant

在Qt中,QVariant是一个通用的值容器,它可以存储任意类型的数据,例如整数、字符串、列表等等。其主要用于提供一种通用的数据类型,方便在不同的函数、类、模块之间传递数据。

QVariant类是Qt的共用体union数据类型,不仅能保存很多Qt类型的值,包括QColor、QBrush、QFont、QRect、QString及QSize等等,而且能存放Qt的容器类型值。可采用toT()将QVariant对象转换称为T类型并获取其值。如toInt()、toFloat()、toString(),可用type()方法获取数据类型,判断数据是否可。对于GUI模块中定义的数据类型没有相应的转换函数,即没有toColor()、没有toImage()这样的函数提供,可通过value()方法实现转换,判断两种类型是否可以转换时可通过canConvert()方法的返回值判断。

因此,虽然QVariant是Qt Core库的一部分,但并未提供对Qt GUI模块中定义的数据类型(如QColor、QImage、QPixmap等)进行转换的函数。不过,可以使用QVariant::value()函数或者qvariant_cast()模板函数来完成这样的转换。

    //整型
    QVariant vNum(100);
    qDebug()<<vNum.toInt();
    //浮点型
    QVariant vPI(3.1415f);
    qDebug()<<vPI.toFloat();
    //字符型
    QVariant vStr("hello!");
    qDebug()<<vStr.toString();
    //bool
    QVariant vB(true);
    qDebug()<<vB.toBool();
    //颜色
    QColor c = QColor(Qt::red);
    QVariant vC =c;
    qDebug()<<vC.type();
    qDebug()<<vC.value<QColor>();

    QVariant vss = vStr;
    //QVariant vss = 1000;

    //返回数据类型转换的能力
    qDebug()<< vss.canConvert(QVariant::Int);
    qDebug()<<vss.toString();

    //转换成功的条件:有转换能力且数据类型匹配
    qDebug()<<vss.convert(QVariant::Int);
    qDebug()<<vss.toString();

    //关闭对话框
    QTimer::singleShot(0,qApp,SLOT(quit()));

相关推荐

  1. Qt容器QVariant

    2024-01-25 14:52:01       56 阅读
  2. Qt5】QVariant

    2024-01-25 14:52:01       36 阅读
  3. 深入探讨Qt中的QVariant

    2024-01-25 14:52:01       31 阅读
  4. QVariant用法介绍

    2024-01-25 14:52:01       30 阅读
  5. Qt容器QToolBox工具箱

    2024-01-25 14:52:01       58 阅读
  6. Qt-容器类】

    2024-01-25 14:52:01       56 阅读
  7. Qt容器QVector

    2024-01-25 14:52:01       54 阅读
  8. Qt容器QHash类

    2024-01-25 14:52:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 14:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 14:52:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 14:52:01       82 阅读
  4. Python语言-面向对象

    2024-01-25 14:52:01       91 阅读

热门阅读

  1. 产品面试题2

    2024-01-25 14:52:01       51 阅读
  2. [go] 中介者模式

    2024-01-25 14:52:01       60 阅读
  3. git reset -hard 后,想撤回reset并恢复到reset前的版本

    2024-01-25 14:52:01       55 阅读
  4. git tag的用法详解

    2024-01-25 14:52:01       49 阅读
  5. 数据结构—基础知识(12):二叉树算法补充

    2024-01-25 14:52:01       58 阅读
  6. 阿里云 微消息队列 MQTT使用与部分常见问题处理

    2024-01-25 14:52:01       54 阅读
  7. Mysql 文件导入与导出

    2024-01-25 14:52:01       62 阅读
  8. 再学微信小程序

    2024-01-25 14:52:01       42 阅读