【发布时间】:2022-01-08 19:46:59
【问题描述】:
我有一个以 QVariant 为键的多重映射,但它不适用于 QByteArray。
函数 map.values("\xc2\x39\xc7\xe1") 正在返回地图的所有值。
这是一个小例子:
#include <QCoreApplication>
#include <QMultiMap>
#include <QVariant>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMultiMap<QVariant, QString> map;
QByteArray b1("\xc1\x39\xc7\xe1");
QByteArray b2("\xc1\x39\xc7\xe2");
map.insert(QVariant(b1), "TEST1");
map.insert(QVariant(b2), "TEST2");
QStringList values = map.values(QByteArray("\xc1\x39\xc7\xe1"));
return a.exec();
}
我也尝试使用 QMap 来查看会发生什么,它只向地图添加了一个元素。
有人可以解释一下这种行为吗?
我做错了什么?
【问题讨论】:
-
请附上minimal reproducible example。您给出的示例甚至不应该编译。
-
只需将代码插入 main.无论如何,我编辑了这个问题。
-
这是为你编译的吗?您使用的是哪个版本的 Qt?
-
Qt 5.14.2,您需要从 QtCreator 创建项目。需要的话我把工程文件也贴出来,你可以直接打开
-
QVariant::operator<已被弃用了 很长时间 时间,甚至没有出现在 currentQt5documentation 中。