QVariant和std::size_t

4

QVariant不支持std::size_t类型。如何使用std::size_t值构造QVariant对象,同时不会失去任何平台相关的大小限制呢?

1个回答

5

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 字节。如果您所使用的平台的最大 size_t 是 4 字节,则可以选择 quint32:

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接