c++ - 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 中会给出一个空映射。为什么会这样?
解决方案
您放入QMap<QString, int>
变体的位置不匹配,但试图QMap<QString, QVariant>
从结果中恢复。要么构建QMap<QString, QVariant>
parseFile 并将其放入变体中,要么用于QVariant::value
在调用方提取正确的类型,即:
qDebug() << words.value<QMap<QString, int>>();
推荐阅读
- reporting-services - 动态 365 SSRS 报告:为动态 365 创建 SSRS 自定义报告,以显示所选实体记录的报告及其每页的相关记录
- excel - 什么是excel中的工作簿?
- prometheus - 为什么prometheus pushgateway会抛出400错误?
- android - Jetpack Compose 中的文本布局优先级
- javascript - 对 vue 组件中的表格进行排序
- python - 遍历 df 中的行并根据这些值创建一个新列
- multithreading - STA/MTA 与公寓/空闲线程与 UI 线程/工作线程是什么?为什么改名?
- crc - CRC存储在16位中,有一个额外的值表示未初始化的CRC值?
- amazon-web-services - AWS - 将 TTL 删除的数据从 DynamoDB 存档到 S3
- python - 如何使用 Python 检查 SMTP 服务器是否处于活动状态?