为什么 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 的构造函数。在这种情况下,将向int投C++ char

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

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

最新更新