如何使用 QStringList 显示 QMap 中的所有键
How to show all keys inside QMap with QStringList?
我对QMap有问题。每个键都有许多值。这个想法是用它的唯一键显示所有值。要使用QtGui应用程序遍历此地图,我有TextEdit(名称:t2)。代码位于按钮内,如下所示:
void MainWindow::on_push2_clicked()
{
QMap<int, QStringList> myMaps;
myMaps[1].append("Autodesk Maya 2014");
myMaps[1].append("Autodesk Inventor 2014");
myMaps[1].append("Autodesk Alias 2014");
myMaps[1].append("Autodesk 3ds Max 2014");
myMaps[1].append("Autodesk Softimage 2014");
myMaps[2].append("Adobe Photoshop CS6");
myMaps[2].append("Adobe Illustrator CS6");
myMaps[2].append("Adobe InDesign CS6");
myMaps[1].append("Autodesk AutoCAD 2014");
QStringList stsl; // the StringList which contains all values
QMap<int, QStringList>::iterator it;
for (it=myMaps.begin(); it!=myMaps.end(); ++it) {
QString qsi=QString::number(it.key());
QString qs=it.value().join(" - ");
stsl << "<span style='color:#FF1000;font-weight:bold;'>"+qsi + " : </span>"+ qs;
}
QString st4=stsl.join("<br/>"); //With setHtml
ui->t2->setHtml(st4);
}
}
输出 :1 : 欧特克玛雅 2014 - 欧特克发明家 2014 - 欧特克别名 2014 - 欧特克 3ds Max 2014 - 欧特克软映像 2014 - 欧特克 AutoCAD 2014 - 光波 122 : Adobe Photoshop CS6 - Adobe Illustrator CS6 - Adobe InDesign CS6。
我想做的输出:1 : 欧特克玛雅 20141 : 欧特克发明家 20141 : 欧特克别名 20141 : 欧特克 3ds Max 20141 : 欧特克软件映像 20141 : 欧特克 AutoCAD 20142 : Adobe Photoshop CS62 : Adobe Illustrator CS62 : Adobe InDesign CS6
我会通过以下方式重写它:
[..]
QMultiMap<int, QString> myMaps;
myMaps.insert(1, "Autodesk Maya 2014");
myMaps.insert(1, "Autodesk Inventor 2014");
myMaps.insert(1, "Autodesk Alias 2014");
myMaps.insert(1, "Autodesk 3ds Max 2014");
myMaps.insert(1, "Autodesk Softimage 2014");
myMaps.insert(2, "Adobe Photoshop CS6");
myMaps.insert(2, "Adobe Illustrator CS6");
myMaps.insert(2, "Adobe InDesign CS6");
myMaps.insert(1, "Autodesk AutoCAD 2014");
QMap<int, QString>::iterator it;
QString output;
for (it = myMaps.begin(); it != myMaps.end(); ++it) {
// Format output here.
output += QString("%1 : %2").arg(it.key()).arg(it.value());
}
[..]
我对Qmap有问题,每个键都有很多值。
你错了。您正在使用 QMap。因此,每个键只有一个值。您的一个值是QStringList。 With String qs=it.value().join(" - ");
,您将此QStringList中的所有字符串连接到一个QString中。
好的,我站正了。QMap 可以在同一个键下有多个值。我完全忽略了"插入多"。尽管如此,上述陈述到目前为止仍然是正确的,因为他的代码中的"append"方法属于 QMap 中的 QStringList 值。它们不会向键添加附加值,而是将新的 QString 添加到 QStringList。
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 为什么我不能在qmap.erase()中使用Java风格的Qmapiterator
- 如何使用 QMap<QString, QString>::const_iterator 作为指针?
- 如何在接口中使用QMAP
- 应用程序使用QMAP存储对象时停止响应
- 为什么qmap使用skiplist而不是ob rb-tree
- 使用QString会在QMap::remove之后导致崩溃
- 使用 LLVM 的 libc++ 时,__1 符号从何而来?
- 在std::cout之后使用std::cin时,换行符从何而来
- 如何在 Qhash 中使用 Qmap
- 为什么以及在何处在C++中使用引用和指针
- 如何使用 QStringList 显示 QMap 中的所有键
- 如果要在名称列表中搜索名称,请使用QMap或Qlist容器
- 使用迭代器和擦除/添加项遍历QMap是否正确
- 使用for迭代QMap
- QT如何使用QTableView在QList中显示QMap
- 基例如何影响使用递归函数的哪些行
- 在插槽中使用 QMap