如何将unsigned long int转换为QVariant

时间:2014-06-17 09:20:38

标签: long-integer qvariant

我意识到QVariant不提供longunsigned long的功能。它提供转化为intunsigned intlong longunsigned long long

我们可以在当前的桌面架构中找到longint是等效的,但它们不是从理论的角度出发的。

如果我想在long中存储QVariant,我有义务首先将值转换为long long。我想知道是否还有其他方法可以解决这个问题。

其次,我有兴趣知道更好/更简单的方法。即使用更简单的代码,避免使用不必要的空间或指令。

3 个答案:

答案 0 :(得分:3)

根据问题标题,主题启动器很可能已从编译器收到以下错误消息:

    error: conversion from ‘uint64_t {aka long unsigned int}’ to ‘QVariant’ is ambiguous

建议的答案均未提供简单的解决方案。 因此,类似于从值进行隐式转换,类似

    QVariant_value = long_unsigned_int_value;

尝试以下操作:

    QVariant_value = QVariant::fromValue(long_unsigned_int_value)

这对我有帮助。

答案 1 :(得分:1)

如果我想在long中存储QVariant,我有义务先将该值转换为long long

 QVariant store (unsigned long int input) {
    unsigned long long data = (unsigned long long) input;
    QVariant qvariant( data );
    return qvariant;
 }

 unsigned long int load (const QVariant& qvariant) {
    bool ok;
    unsigned long int data = (unsigned long) qvariant.toULongLong(&ok);
    if (ok)
       return data;
    else
       return NAN;
 }

答案 2 :(得分:1)

此问题与设计QVariant类无关。但这是长型的问题。

long类型更改但int(4)或long long(8)在所有LLP64 / IL32P64 LP64 / I32LP64中与wikipedia注释相同。

Intel Developer zone说:

  

建议:如果您对整数类型有重要意义   在所有英特尔平台上大小相同,然后考虑将“长”替换为   “int”或“long long”。 “int”整数类型的大小为4   字节和“long long”整数类型的大小为8字节   上述操作系统和架构的组合。

祝你好运 /穆罕默德

相关问题