不二如是 发表于 2016-10-28 16:19:26

129-QVariant(变量类)-【扫盲】

本帖最后由 不二如是 于 2016-10-29 10:33 编辑



QVariant类是最常见的Qt的数据类型的一个共同体(union)。

一个QVariant对象在一个时间只保存一个但一类型的单一值(字符串列表就是多值的。。。)。

使用toT()函数复制以前的QVariant对象,然后对其进行转换,所以之前的QVariant对象并不会改变。

‘T’就是一种数据类型,Int、Float、String都行哈~

QVariant是QtCore库的一部分,所以没有提供QtGui中定义的数据类型进行转换。

所以QColor、QImage都无法通过toColor()、toImage()这样事儿的转换哈~

但可以使用QVariant::value()或者qVariantValue()模板来完成所有转换,看后面的130就值了。

对于同一种转换,canConvert()和convert()函数并不一定返回同样的结果!

换句话说,假如提供了合适的数据时,这两个类型间可以进行转换~

但是!

如果提供的数据不合适,那么转换就会失败!

故而,这哥俩儿返回值就不同,就是下面表里的意思~

例如:

QString str = “123”;

QString str1 = “FishC”;

str可以转换为int类型,因为只有数字字符,canConvert()和convert()返回都会为true。

str1包含了非数字字符,真正进行转换时,canConvert(),trueconvert(),false。

没错,我是传送门~那边有例子等你~⊙▂⊙

使用canConvert()函数返回true的数据类型组合就是下面那张表。

不二给你翻译下哈~




类型 自动转换到
QMetaType::Bool Char、Double、Int、LongLong、String、UInt、ULongLong
QMetaType::ByteArray Double、Int、LongLong、String、UInt、ULongLong
QMetaType::Char Bool、Int、UInt、LongLong、ULongLong
QMetaType::Color String
QMetaType::Date DateTime、String
QMetaType::DateTime Date、String、Time
QMetaType::Double Bool、Int、LongLong、String、UInt、ULongLong
QMetaType::Font String
QMetaType::Int Bool、Char、Double、LongLong、String、UInt、ULongLong
QMetaType::KeySequence Int、String
QMetaType::List StringList(前提列表中项目可以转换为字符串)
QMetaType::LongLong Bool、ByteArray、Char、Double、Int、String、UInt、ULongLong
QMetaType::Point PointF
QMetaType::Rect RectF
QMetaType::String Bool、ByteArray、Char、Color、Date、DateTime、Double、Font
Int、KeySquence、LongLong、StringList、Time、UInt、ULongLong
QMetaType::StringList List、String(列表中仅有一个项目)
QMetaType::Time String
QMetaType::UInt Bool、Char、Double、Int、LongLong、String、ULongLong
QMetaType::ULongLong Bool、Char、Double、Int、LongLong、String、UInt
页: [1]
查看完整版本: 129-QVariant(变量类)-【扫盲】