[英]How do I convert QMap<QString, QMap<QString, int> > to a QVariant?
QVariant
( QSettings
类需要)支持从QMap<QString, QVariant>
但试图初始化这样的事情:
QMap<QString, QVariant(QMap<QString, QVariant>)> i;
给出错误:
函数返回一个函数。
然后我为QVariant()
尝试了QMap<QString, QVariant>
重载并得到了
错误:没有用于调用
QVariant::QVariant(QMap<QString, QMap<QString, int> >&)
匹配函数QVariant::QVariant(QMap<QString, QMap<QString, int> >&)
现在我尝试了一个类型转换:
QMap<QString, (QVariant)QMap<QString, QVariant> > i;
得到了
模板参数2无效
'之前声明中的无效类型';
'令牌
那么将嵌套QMap
转换为QVariant
对象所需的巫术是什么?
在QMap<QString, QVariant(QMap<QString, QVariant>)>
,您已经定义了从字符串到函数类型的映射。 你真正想要的是QMap<QString, QVariant>
。
你不需要QMap<QString,(QVariant)QMap<QString, QVariant> >
因为这只是语法错误。 两个模板参数都需要是类型名称,并且类型名称不能成为类型名称的一部分。
将QMap<QString, int>
(或几乎任何其他类型的QMap
)放入QVariant
将不起作用。 唯一可以转换为QVariant
QMap
类型是QMap<QString,QVariant>
。
这种类型的typedef可能很有用: QVariantMap
。 如果您坚持在这种情况下使用QVariantMap
,那么事情将适合您。
报告的错误是QVariant(...)
不是类型,而是函数(c-tor)。
你应该刚刚使用过: Map<QString, QVariant> i;
并且仅在为地图指定值时使用QVariant(QMap<QString, QVariant>)
。 问题的关键是QVariant
是什么真正的。 所以地图QVariants
,可以具有int
在一个位置(包含在QVariant
)和QDate
在另一个。 因此,在声明类型时,您无法指定要将QVariant
保留的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.