QVariant 不支持 std::size_t。使用 std::size_t 值构造 QVariant 对象而不丢失任何平台相关大小限制的正确方法是什么?
问问题
1609 次
1 回答
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;
于 2014-08-23T13:29:14.257 回答