QVariant类作为一个最为普遍的Qt数据类型的联合。
因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。
一个QVariant对象在一个时间内只保留一种类型的值。我们可以使用canConvert来查询是否能够转换当前的类型。转换类型一般以toT()命名.
摘录了一个example来说明QVariant的使用方法:
QVariant v1(15);
qDebug() << v1.toInt(); // 结果为15
QVariant v2(12.3);
qDebug() << v2.toFloat(); // 结果为12.3
QVariant v3("nihao");
qDebug() << v3.toString(); // 结果为"nihao"
QColor color = QColor(Qt::red);
QVariant v4 = color;
qDebug() << v4.type(); // 结果为QVariant::QColor
qDebug() << v4.value<QColor>(); // 结果为QColor(ARGB 1,1,0,0)
QString str = "hello";
QVariant v5 = str;
qDebug() << v5.canConvert(QVariant::Int); // 结果为true
qDebug() << v5.toString(); // 结果为"hello"
qDebug() << v5.convert(QVariant::Int); // 结果为false
qDebug() << v5.toString(); // 转换失败,v5被清空,结果为"0"
1471




被折叠的 条评论
为什么被折叠?



