在QT中,可以使用QMap作为键值对的集合。QMap是Qt的一个模板类,它存储了键值对,并且可以通过键来快速查找值。
导入
#include <QMap>
以下是一些使用QMap的方法:
1.创建并初始化一个
QMap<int, QString> UserDepartmentList;
UserDepartmentList[0]="--请选择--";UserDepartmentList[10]="计算机系";UserDepartmentList[11]="电子系";UserDepartmentList[12]="历史系";UserDepartmentList[13]="中文系";
2.插入数据
UserDepartmentList.insert(1, "音乐系");
UserDepartmentList.insert(2, "体育系");
UserDepartmentList.insert(3, "化学系");
3.移除数据
UserDepartmentList.remove(1); // 移除键为 1 的项
4.遍历数据
//初始化 部门 下拉列表数据QMap<int,QString> departmentList = CommonData::GetInstance()->UserDepartmentList;for(auto item = departmentList.begin(); item != departmentList.end(); ++item){//qDebug() << "Key:" << item.key() << "Value:" << item.value();ui->cbo_Department->addItem(item.value());//添加下拉选项}ui->cbo_Department->setCurrentIndex(0);//设置默认选择索引
4.1 使用keys方法和values方法分别获取所有的键和值:
QList<int> keys = UserDepartmentList.keys();
QList<QString> values = UserDepartmentList.values();
5.使用value方法获取键对应的值:
QString value = UserDepartmentList.value(2);
由值找键
int key = -1;
QString value = "化学系";
for (auto it = UserDepartmentList.begin(); it != UserDepartmentList.end(); ++it) {if (it.value() == value ) {key = it.key();break;}
}
6.使用contains方法检查是否包含某个键:
if (UserDepartmentList.contains(2)) {// UserDepartmentList包含键2
}
7.使用remove方法删除键值对:
UserDepartmentList.remove(3); // 删除键为3的键值对
8.使用size方法获取键值对的数量:
int size = UserDepartmentList.size();
9.修改键值
UserDepartmentList[10]="计算机系";
10.清除数据
UserDepartmentList.clear();
11.一个键对应多个值
QMultiMap<int, QString> multiMap;
multiMap.insert(1, "A");
multiMap.insert(1, "B");
multiMap.insert(2, "C");// 遍历 QMultiMap 数据
for (auto it = multiMap.begin(); it != multiMap.end(); ++it) {qDebug() << "Key:" << it.key() << "Value:" << it.value();
}// 获取所有值为某键的列表
QList<QString> valuesForKey = multiMap.values(1);
qDebug() << "Values for key 1:" << valuesForKey;
遍历数据
for (auto it = multiMap.begin(); it != multiMap.end(); ++it) {qDebug() << "Key:" << it.key() << "Value:" << it.value();
}