我想使用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