) 返回一个空地图,c++,qt,qvariant"/>

首页 > 解决方案 > QVariant::fromValue(QMap) 返回一个空地图

问题描述

我有一个函数,它解析文件并用条目填充 QMap<QString, int> 并返回具有该映射值的 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<QString, int>,这个函数可以正常工作,但是将它包装在 QVariant 中会给出一个空映射。为什么会这样?

标签: c++qtqvariant

解决方案


您放入QMap<QString, int>变体的位置不匹配,但试图QMap<QString, QVariant>从结果中恢复。要么构建QMap<QString, QVariant>parseFile 并将其放入变体中,要么用于QVariant::value在调用方提取正确的类型,即:

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

推荐阅读