q373144566 2021-05-29 16:00 采纳率: 16.7%
浏览 139

Qt 中Map集合的问题

 bool a = false;//查找区域是否相同的
    QMap<int, MNdata_stru>::iterator it;
    if (m_model->rowCount() != 0)
    {
        it = g_QMapParaData.end() - 1;
        qDebug()<<"333333"<<it.key();
    }
    else
    {
        it = g_QMapParaData.end();
        qDebug()<<"111111"<<it.key();
    }

    for (int i = 0; i < num; i++)
    {
        if (mn == g_QMapParaData[i].MN)
        {
            QMessageBox::warning(this, tr("提示"), tr("您添加的站点编号已经使用,请勿重复操作!"), QMessageBox::tr("确定"));
            return;
        }
        else if (area == m_model->item(i)->text())
        {
            MNdata_stru temp_MNdata_stru;
            temp_MNdata_stru.area = area;
            temp_MNdata_stru.name = name;
            temp_MNdata_stru.MN = mn;

            QString temp_name = QString("%1(%2)").arg(name).arg(mn);
            temp_MNdata_stru.itemStation = new QStandardItem(QIcon(QPixmap(":/image/res/house2.png")), temp_name);
            qDebug() << "------------------------g_QMapParaData.count()" << g_QMapParaData.end().key();

            int n = it.key();
            qDebug()<<"444444"<<n;
            g_QMapParaData.insert(n, temp_MNdata_stru);
            m_model->item(i)->appendRow(g_QMapParaData[n].itemStation);
            qDebug()<<"dddddddddddddddddddd"<<g_QMapParaData.count();
            for(it=g_QMapParaData.begin();it!=g_QMapParaData.end();it++){
                qDebug()<<"message"<<it.key()<<it.value().name;
            }
            a = true;

            break;
        }
    }

    if (!a)
    {
        QStandardItem *itemArea = new QStandardItem;
        itemArea->setText(area);
        m_model->appendRow(itemArea);//添加新区域

        MNdata_stru temp_MNdata_stru;
        temp_MNdata_stru.area = area;
        temp_MNdata_stru.name = name;
        temp_MNdata_stru.MN = mn;

        QString temp_name = QString("%1(%2)").arg(name).arg(mn);
        temp_MNdata_stru.itemStation = new QStandardItem(QIcon(QPixmap(":/image/res/house2.png")), temp_name);
        qDebug() << "======================g_QMapParaData.count()" << g_QMapParaData.count();

        int n = it.key();
        qDebug()<<"222222"<<n;
        g_QMapParaData.insert(n, temp_MNdata_stru);
        m_model->item(num)->appendRow(g_QMapParaData[n].itemStation);
    }

 

添加了两条信息,aa和bb。aa不显示是key重复了,为什么多出一条key为0的

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-29 17:17
    关注

    你插入的都重复吧,第32行:nt n = it.key();也就是说n已经是map中的一个key了,

    然后34行:g_QMapParaData.insert(n, temp_MNdata_stru);又用这个key插入了一遍,会覆盖掉之前的。

    如有帮助,请采纳一下,谢谢。

    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效