QVariant和std :: size_t

时间:2014-08-23 12:04:51

标签: c++ qt qvariant

QVariant不支持std :: size_t。 在不丢失任何平台相关大小限制的情况下,使用std :: size_t值构造QVariant对象的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

QVariant不直接支持size_t,但您仍然可以存储它:

QVariant v;
size_t s1 = 5;
v.setValue(s1);
qDebug() << v;

// get back the data
size_t s2 = v.value<size_t>();
qDebug() << s2;

如果要以一致的方式将size_t存储在文件或数据库中,可以将其转换为quint64,它始终为8个字节。或者quint32,如果你的平台的最大size_t是4个字节:

QVariant v;
size_t s1 = 5;
quint64 biggest = s1;
qDebug() << "sizeof(quint64) =" << sizeof(quint64);

v.setValue(biggest);
qDebug() << v;

// get back the data
quint64 biggest2 = v.value<quint64>();
qDebug() << biggest2;
size_t s2 = biggest2;