繁体   English   中英

如何使用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:Autodesk Maya 2014-Autodesk Inventor 2014-Autodesk Alias 2014-Autodesk 3ds Max 2014-Autodesk Softimage 2014-Autodesk AutoCAD 2014-Lightwave 12 2:Adobe Photoshop CS6-Adobe Illustrator 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 Photoshop CS6 2:Adobe Illustrator CS6 2: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可以有多个值。 我完全忽略了“ insertMulti”。 尽管如此,上述声明到目前为止仍然是正确的,因为他代码中的“ append”方法属于QMap中的QStringList值。 它们不向键添加附加值,而是向QStringList添加新的QString。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM