我有结构QMap<QString, QMap<QString, QString> > *map;
接下来,我插入数据:
map = new QMap<QString,QMap<QString, QString> >;
QMap<QString,QString> *d = new QMap<QString, QString>;
d->insert("Name","Michal");
map->insert("QLineEdit",*d);如果我试着
QMapIterator<QString, QMap<QString, QString> > i(*mapa);
while (i.hasNext()) {
i.next();
qDebug() << "Key: " << i.key() << " Value: " << i.value() << endl;
}我得到:
Key: "QLineEdit" Value: QMap(("Name", "Michal")).如何获得Name作为键和Michal作为值
我试过:
QMap<QString, QString> *p = new QMap<QString, QString>;
*p = i.value();
qDebug() << "Key: " << p->key() << " Value: " << p->value();但是它不起作用,我得到了以下错误:
no matching function for call to 'QMap<QString, QString>::key()' qDebug()` << "Key: " << p->key() << " Value: " << p->value();发布于 2014-12-02 22:17:00
在您的实现中,第一个映射包含一个内部映射(变量d)。
想象一下,在d图中有另一个元素,比如年龄。那么您将添加另一个元素:
d->insert("Age", "42");如果您现在只想像在尝试中那样打印p->key(),您就无法知道要访问的“年龄”和“名称”变量中的哪个,因此需要第二个迭代器。
如果要打印此内部映射的所有键和值,则可以创建一个新的迭代器,该迭代器将迭代第二个映射并获取和打印该值:
QMapIterator<QString, QString > i2(i.value());
while (i2.hasNext()) {
i2.next();
qDebug() << " Key: " << i2.key() << " Value: " << i2.value() << endl;
}或者,您可以使用.begin()和.end()检查在"STL-way“中迭代内部映射:
QMap<QString, QString>::const_iterator i2;
for (i2 = i.value().begin(); i2 != i.value().end(); ++i2){
qDebug() << " Key: " << i2.key() << " Value: " << i2.value();
}https://stackoverflow.com/questions/27259123
复制相似问题