QT::QVariant

 

QVariant类像是最常见的Qt的数据类型的一个共用体。

 

一个QVariant对象在一个时间只保存一个单一类型的单一值。

 

使用toT()函数来将QVariant对象转换为T类型。并且获取他的值。

toT()函数会复制QVariant对象,然后对其转换。所以QVariant对象并不会改变。

 

对于一个类型是否可以转换为一个特殊类型,可以使用canConvert()函数来判断。如果可以转换,则该函数返回true。

 

也可使用convert()函数将一个类型转换为其他不同的类型。如果转换成功则返回true。

 

如果无法进行转换,variant对象将会被清空。并且返回false.对于同一种转换,两函数convert(),并不一定返回相同的结果。

 

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"

 

posted @ 2021-02-03 22:42  osbreak  阅读(326)  评论(0编辑  收藏  举报