QVariant::fromValue(QMap<QString, int>) 返回一个空映射

问题描述

我有一个函数,它解析文件并用条目填充 QMap 并返回具有该映射值的 QVariant:

QVariant FileParser::parseFile(QString filePath)
{
    QMap<QString,int> toReturn;
    ... (parse the file and fill the map)
    return QVariant::fromValue(toReturn);
}

当我调用地图后查看地图内容时,我看到一个空地图:

QMap<QString,QVariant> words = FileParser().parseFile(QCoreApplication::applicationDirPath() + "/Input.txt").toMap();
qDebug()<<words; //Gives QMap()

如果我返回 QMap,这个函数可以正常工作,但是将它包装在 QVariant 中会给出一个空映射。为什么会这样?

解决方法

您将 QMap<QString,int> 放入变体,但试图从结果中取回 QMap<QString,QVariant> 时存在不匹配。在 parseFile 中构建 QMap<QString,QVariant> 并将其放入变体中,或者使用 QVariant::value 在调用方提取正确的类型,即:

qDebug() << words.value<QMap<QString,int>>();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...