为什么 QVariant 将 char 类型视为整数类型?
Why is QVariant treating char type as an integer type?
我正在尝试编写一个代码片段,它将采用 QVariants 的 QList 并使用 ListView 填充列表。
QString、int、bool、double 等类型的用例是成功的。但是,当我尝试将 char 数据类型作为列表元素传递时,它被视为整数,即正在采用 ASCII 值。
有没有办法让 QVariant 把 char 当作 char?
注意:
我正在使用 Qt5.6.0。
我试图通过使用 QVariant::type() 来探测类型,期望它成为 return QVariant::Char 以便我将它转换为字符串并使用它。但是,QVariant::type() returned QVariant::Int.
int main()
{
QVariant charVar = 'A';
qDebug()<< charVar<< "\n";
return 0;
}
实际结果:
QVariant(int, 65)
期望:
QVariant(char, 'A')
QVariant
的char
类型与int
的类型相同。如果你想存储一个实际的字符,你可能需要类型 QChar
.
请注意 QVariant
只有 QChar
和 int
的构造函数。在这种情况下,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)
我正在尝试编写一个代码片段,它将采用 QVariants 的 QList 并使用 ListView 填充列表。
QString、int、bool、double 等类型的用例是成功的。但是,当我尝试将 char 数据类型作为列表元素传递时,它被视为整数,即正在采用 ASCII 值。
有没有办法让 QVariant 把 char 当作 char?
注意: 我正在使用 Qt5.6.0。 我试图通过使用 QVariant::type() 来探测类型,期望它成为 return QVariant::Char 以便我将它转换为字符串并使用它。但是,QVariant::type() returned QVariant::Int.
int main()
{
QVariant charVar = 'A';
qDebug()<< charVar<< "\n";
return 0;
}
实际结果:
QVariant(int, 65)
期望:
QVariant(char, 'A')
QVariant
的char
类型与int
的类型相同。如果你想存储一个实际的字符,你可能需要类型 QChar
.
请注意 QVariant
只有 QChar
和 int
的构造函数。在这种情况下,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)