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);
数据转换
-
查看是否用有转换能力 使用:canConvert()方法
-
数据转换 使用:convert()方法
-
数据转换成功条件:有转换能力,并且类型匹配
注意:如果转换失败,原来数据也会被清空!
QVariant varStr("Hello");
// 查看是否用有转换能力
bool isCan = varStr.canConvert(QVariant::Int);
// 数据转换
bool isSuccess = varStr.convert(QVariant::Int);
qDebug() << "是否拥有转换能力:" << isCan
<< "是否转换成功:" << isSuccess;
以上代码执行结果:
是否拥有转换能力: true 是否转换成功: false
奇牛学院_佳人学院链接