QVariant and std::size_t

QVariant and std::size_t

本文关键字:size QVariant std and      更新时间:2023-10-16

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

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;