QMetaType :: convertを使用して、QJsonValueを別の動的タイプに変換しようとしています。最初は、次のコードをQStringに動的型の設定でテストしましたが、変換に失敗しました。QMetaType :: convert failed
QJsonValue value("test");
QString string;
if (!QMetaType::convert(&value, QMetaType::QJsonValue, &string, QMetaType::QString))
{
qDebug() << "failed";
}
次に、この静的メソッドが、メタシステムに2つのメタタイプ間で登録された変換があるかどうかを確認することがわかりました。残念ながら、結果は偽でした。たぶん、QJsonValueは非常に複雑でQJsonValueからQStringへの変換はサポートされていません。最後に、私はこれを試みたが、結果はまだ偽だった:それは奇妙だ
qDebug() << QMetaType::hasRegisteredConverterFunction(QMetaType::Int, QMetaType::Int);
、Qtは、基本的なメタ型間の変換機能を実装していない用量であるように思われます。また、QMetaType :: registerConverterを使用して、2つの基本的なメタタイプ間でコンバータ関数を登録することはできません。
Qt dosen'tが基本的なメタタイプ間の変換を実装しているとは思えません。私が見逃した初期設定や.pro設定はありますか?
ご迷惑をおかけします。残念ながら、既知の型(QJsonObjectまたはQVariant)をQMetaType :: Type引数で決定される動的型に変換する必要があるため、解決策は役に立ちません。私がやるべきことは、.net mvcのアクション内でのモデルバインディングのようなものです。したがって、QMetaType :: convertのような変換関数が必要です。その型パラメータはenumテンプレートではありません。 "QMetaType :: convertはQVariantデータのみを処理できます"というアドバイスによると、QMetaType :: hasRegisteredConverterFunction(QMetaType :: QVariant、QMetaType :: QVariant)をテストしたところ、最終結果はfalseでした。奇妙な。 – wxfred