如何将unsigned long int转换为QVariant

Ton*_*ony 7 qvariant long-integer

我已经意识到QVariant不提供long和的功能unsigned long.它提供转换到int,unsigned int,long longunsigned long long.

我们可以在当前的桌面架构中找到long并且int是等价的,但它们不是从理论的角度出发的.

如果我想将存储longQVariant我有义务先转换价值long long.我想知道是否还有其他方法可以解决这个问题.

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

小智 9

很有可能(根据问题标题)topic starter 收到了来自编译器的以下错误消息:

    error: conversion from ‘uint64_t {aka long unsigned int}’ to ‘QVariant’ is ambiguous
Run Code Online (Sandbox Code Playgroud)

建议的答案都没有提供简单的解决方案。所以,而不是从一个值的隐式转换,像

    QVariant_value = long_unsigned_int_value;
Run Code Online (Sandbox Code Playgroud)

尝试以下操作:

    QVariant_value = QVariant::fromValue(long_unsigned_int_value)
Run Code Online (Sandbox Code Playgroud)

这对我有帮助。

  • 对于搜索引擎:此答案也适用于错误消息“错误:从‘long int’到‘const QVariant’的转换不明确”的情况。 (2认同)

Ton*_*ony 2

如果我想将 a 存储long在 a 中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;
 }
Run Code Online (Sandbox Code Playgroud)