Qt容器QVariant

本文详细介绍了Qt中的QVariant作为通用值容器的作用,如何存储不同类型数据,以及如何通过toT()、type()和canConvert()等方法进行数据类型转换,特别强调了与QtGUI模块数据类型转换的区别和转换方法.
摘要由CSDN通过智能技术生成

在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()));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y木子李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值