[英]Why does QVariant::type() return a QVariant::Type when it should be interpreted as a QMetaType::Type?
[英]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() 來探測類型,期望它返回 QVariant::Char 以便我將其轉換為字符串並使用它。 但是,QVariant::type() 返回了 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.