簡體   English   中英

為什么 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() 來探測類型,期望它返回 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM