首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QMap<QString、QMap<QString、int> >转换为QVariant?

如何将QMap<QString、QMap<QString、int> >转换为QVariant?
EN

Stack Overflow用户
提问于 2010-07-19 13:41:14
回答 2查看 10K关注 0票数 5

QVariant ( QSettings类所需)支持从QMap<QString, QVariant>创建

但是尝试初始化这样的东西:

代码语言:javascript
复制
QMap<QString, QVariant(QMap<QString, QVariant>)> i;

给出错误:

函数返回函数。

因此,我尝试了QMap<QString, QVariant>重载QVariant(),并得到

错误:没有调用QVariant::QVariant(QMap<QString, QMap<QString, int> >&)的匹配函数

现在我试了一个打字机:

代码语言:javascript
复制
QMap<QString, (QVariant)QMap<QString, QVariant> > i;

并得到了

模板参数2无效

在“;”令牌之前的声明中输入无效类型

那么,将嵌套的QMap转换为QVariant对象所需的伏都教是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-19 13:51:29

报告的错误是,QVariant(...)不是类型,而是函数(c-tor)。

您应该只使用:Map<QString, QVariant> i;,并且只在为映射赋值时使用QVariant(QMap<QString, QVariant>)。关键是QVariant是真正的任何东西。因此,QVariants地图可以在一个位置(包含在QVariant中)有一个int,在另一个位置上可以有一个QDate。因此,在声明类型时,不能指定希望QVariant保存的类型。

票数 4
EN

Stack Overflow用户

发布于 2010-07-19 14:03:16

  1. In QMap<QString, QVariant(QMap<QString, QVariant>)>,您已经定义了一个从字符串到函数类型的映射。你真正想要的是一个QMap<QString, QVariant>.

  1. ,您不需要QMap<QString,(QVariant)QMap<QString, QVariant> >,因为这在语法上是不正确的。这两个模板参数都需要类型名称,并且类型广播不能是at类型名称的一部分。

  1. QMap<QString, int> (或几乎任何其他类型的QMap)放入QVariant中是行不通的。唯一可以转换为QMapQVariant类型是QMap<QString,QVariant>

对于这种类型,有一个类型是有用的:QVariantMap。如果您坚持在这种情况下使用QVariantMap,那么事情就会对您正常工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3281555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档