【问题标题】:QVariant and std::size_tQVariant 和 std::size_t
【发布时间】:2014-10-17 04:14:06
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qvariant


    【解决方案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 存储在文件或数据库中,您可以将其转换为始终为 8 字节的 quint64。如果您的平台的最大 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;
    

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 2011-10-31
      • 2017-12-23
      • 2018-02-15
      • 2016-12-05
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多