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]