首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用QMap显示QStringList内部的所有键?

如何用QMap显示QStringList内部的所有键?
EN

Stack Overflow用户
提问于 2013-09-05 20:16:08
回答 2查看 7.7K关注 0票数 1

我对QMap有个问题。每个键都有许多值。这样做的目的是用其独特的键来显示所有的值。要使用QtGui应用程序迭代这个映射,我有TextEdit (名称: t2)。代码位于按钮内,如下所示:

代码语言:javascript
运行
复制
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: Autodesk Maya 2014 - Autodesk Inventor 2014 - Autodesk Alias 2014 - Autodesk 3ds Max 2014 - Autodesk Softimage 2014 - Autodesk AutoCAD 2014 - Lightwave 12 2: Adobe CS6 - CS6 - Adobe InDesign CS6。

//我想做的输出:1: Autodesk Maya 2014 1: Autodesk Inventor 2014 1: Autodesk Alias 2014 1: Autodesk 3ds Max 2014 1: Autodesk Softimage 2014 1: Autodesk AutoCAD 2014 2: Adobe CS6 2: CS6 2: Adobe CS6

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-05 20:35:20

我会用以下方式重写它:

代码语言:javascript
运行
复制
[..]
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());
}
[..]
票数 7
EN

Stack Overflow用户

发布于 2013-09-05 20:34:52

我对Qmap有一个问题,每个键都有许多值。

你错了。您正在使用QMap。所以每个键都有一个值。您的一个值是QStringList。With String qs=it.value().join(" - "); --将此QStringList中的所有字符串连接到一个QString中。

好吧,我被纠正了。QMap可以在同一个键下有多个值。我完全忽略了‘插入’。不过,到目前为止,上述语句仍然正确,因为他代码中的“追加”方法属于QMap中的QMap值。它们不向键添加附加值,而是将新的QString添加到QStringList中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18645134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档