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()方法的返回值判断。

存储基本数据类型

// 存储int型数据
QVariant varInt(22);
int nAge = varInt.toInt();
// 存储double型数据
QVariant varDouble(3.1415926);
double dPI = varDouble.toDouble();
// 存储bool型数据
QVariant varBool(true);
bool varB = varBool.toBool();

存储Qt类型

// 存储String类型数据
QVariant varString("Hello");
QString hello(varString.toString());
// 存储QColor
QColor color = QColor(Qt::yellow);
QVariant varColor(color);

数据转换

  1. 查看是否用有转换能力 使用:canConvert()方法

  2. 数据转换 使用:convert()方法

  3. 数据转换成功条件:有转换能力,并且类型匹配

     注意:如果转换失败,原来数据也会被清空!

QVariant varStr("Hello");
// 查看是否用有转换能力
bool isCan = varStr.canConvert(QVariant::Int);
// 数据转换
bool isSuccess = varStr.convert(QVariant::Int);
qDebug() << "是否拥有转换能力:" << isCan
         << "是否转换成功:" << isSuccess;

以上代码执行结果:

是否拥有转换能力: true 是否转换成功: false

奇牛学院
奇牛学院_佳人学院链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值