QVariant ( QSettings类所需)支持从QMap<QString, QVariant>创建
但是尝试初始化这样的东西:
QMap<QString, QVariant(QMap<QString, QVariant>)> i;给出错误:
函数返回函数。
因此,我尝试了QMap<QString, QVariant>重载QVariant(),并得到
错误:没有调用
QVariant::QVariant(QMap<QString, QMap<QString, int> >&)的匹配函数
现在我试了一个打字机:
QMap<QString, (QVariant)QMap<QString, QVariant> > i;并得到了
模板参数2无效
在“;”令牌之前的声明中输入无效类型
那么,将嵌套的QMap转换为QVariant对象所需的伏都教是什么?
发布于 2010-07-19 13:51:29
报告的错误是,QVariant(...)不是类型,而是函数(c-tor)。
您应该只使用:Map<QString, QVariant> i;,并且只在为映射赋值时使用QVariant(QMap<QString, QVariant>)。关键是QVariant是真正的任何东西。因此,QVariants地图可以在一个位置(包含在QVariant中)有一个int,在另一个位置上可以有一个QDate。因此,在声明类型时,不能指定希望QVariant保存的类型。
发布于 2010-07-19 14:03:16
QMap<QString, QVariant(QMap<QString, QVariant>)>,您已经定义了一个从字符串到函数类型的映射。你真正想要的是一个QMap<QString, QVariant>.,
QMap<QString,(QVariant)QMap<QString, QVariant> >,因为这在语法上是不正确的。这两个模板参数都需要类型名称,并且类型广播不能是at类型名称的一部分。QMap<QString, int> (或几乎任何其他类型的QMap)放入QVariant中是行不通的。唯一可以转换为QMap的QVariant类型是QMap<QString,QVariant>。对于这种类型,有一个类型是有用的:QVariantMap。如果您坚持在这种情况下使用QVariantMap,那么事情就会对您正常工作。
https://stackoverflow.com/questions/3281555
复制相似问题