c++ - 为什么 QVariant 将 char 类型视为整数类型?

标签 c++ qt qvariant

我正在尝试编写一个代码片段,它将采用 QVariants 的 QList 并使用 ListView 填充列表。

QString、int、bool、double 等类型的用例是成功的。但是,当我尝试将 char 数据类型作为列表元素传递时,它被视为整数,即采用 ASCII 值。

有什么方法可以让QVariant将char视为char吗?

注意: 我使用的是Qt5.6.0。 我尝试使用 QVariant::type() 来探测类型,期望它返回 QVariant::Char 以便我将其转换为字符串并使用它。但是,QVariant::type() 返回了 QVariant::Int。

int main()
{
    QVariant charVar = 'A';
    qDebug()<< charVar<< "\n";
    return 0;
}

实际结果:

QVariant(int, 65)

期望:

QVariant(char, 'A')

最佳答案

QVariantchar 类型与 int 类型相同。如果您想存储实际字符,您可能需要 QChar 类型。

请注意,QVariant 仅具有 QCharint 的构造函数。在这种情况下,C++ char 将被转换为 int

要将示例视为字符,您可以显式转换为 QChar

QVariant v1 = QChar('A');
QVariant v2(QVariant::Type::Char);
v2 = 'B';
qDebug() << v1 << v2;
//Output: QVariant(QChar, 'A') QVariant(int, 66)

关于c++ - 为什么 QVariant 将 char 类型视为整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56661692/

相关文章:

C++11:将 POD 附加到 vector<> 的最有效方法

c++ - 使用宏强制预处理器错误

c++ - 验证仿函数的目标对象

c++ - -O1/2/3 与 -std=c++1y/11/98 - 如果包含 <cmath> 我收到错误 : '_hypot' was not declared in this scope

c++ - 将 const QByteArray 传递给重载函数

c++ - Qt QMap.insert() 失败

c++ - 如何将 VARIANT* 与 dynamicCall 一起使用?

c++ - 如何检查 QString 的第一个字符?

c++ - OpenGL 纹理不

qt - 使用 QSettings 保存 64 位整数