QVariant не поддерживает std::size_t. Каков правильный способ создания объекта QVariant с использованием значения std::size_t без потери каких-либо ограничений размера, зависящих от платформы?
QVariant и std::size_t
Ответы (1)
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;
person
fxam
schedule
23.08.2014