我想使用QMetaType :: convert將QJsonValue轉換爲另一種動態類型。起初,我測試了以下代碼,將動態類型設置爲QString,轉換失敗。QMetaType ::轉換失敗
QJsonValue value("test");
QString string;
if (!QMetaType::convert(&value, QMetaType::QJsonValue, &string, QMetaType::QString))
{
qDebug() << "failed";
}
然後,我發現這個靜態方法來檢查元系統是否有兩個元類型之間的註冊轉換。
qDebug() << QMetaType::hasRegisteredConverterFunction(QMetaType::QJsonValue, QMetaType::QString);
不幸的是,結果是錯誤的。也許QJsonValue非常複雜,不支持從QJsonValue到QString的轉換。最後,我想這一點,其結果仍然是假的:
qDebug() << QMetaType::hasRegisteredConverterFunction(QMetaType::Int, QMetaType::Int);
很奇怪,好像是,Qt的劑量不會實現基本元類型之間的轉換功能。而且,用戶不能使用QMetaType :: registerConverter在兩種基本元類型之間註冊轉換函數。
我還是不能相信Qt不會實現基本元類型之間的轉換,有沒有初始化或我錯過的.pro設置?
不好意思回覆遲到。不幸的是,你的解決方案不能提供幫助,因爲我需要將已知類型(QJsonObject或QVariant)轉換爲由QMetaType :: Type參數確定的動態類型。我想要做的就是在.net mvc的動作中模型綁定。所以,我需要一個像QMetaType :: convert這樣的轉換器函數,其類型參數是一個枚舉而不是模板。根據您的建議,「QMetaType :: convert只能處理QVariant數據」,我測試了QMetaType :: hasRegisteredConverterFunction(QMetaType :: QVariant,QMetaType :: QVariant),最終結果是錯誤的。奇怪的。 – wxfred