在QMap中嵌套QList

    xiaoxiao2023-03-24  4

    刚接触QT的QMap比较困惑,看这名字以为是二维数组

    因为我把QList当作一维数组来用了,事实上也确实可以,但只当一维数组太浪费了。可参考别的资料

    [cpp] view plain copy QMap<QString, QList<QString> > panelStatistics;      QList<QString> panelInfo;      panelInfo.push_back("0102");      panelInfo.push_back("1253");      panelInfo.push_back("1256");      panelStatistics.insert("面板1", panelInfo);        QMap<QString, QList<QString> >::iterator it;      for(it = panelStatistics.begin(); it != panelStatistics.end(); ++it)      {              QList<QString> tmp = it.value();              qDebug()<<it.key() <<" "<< tmp[0] <<" "<< tmp[1] <<" "<< tmp[2];      }  

    如果你和我一样,非得把QMap用成二维数组

    那么你这可这样

    [cpp] view plain copy //在初始化的时候这样  QMap<int, QList<Qstring> > tableDate;  QList<Qstring> tmp;  for(int i = 0; i < 10; i ++)  {      tmp.clear();      tmp.push_back("monday in row"   + QString::number(i));      tmp.push_back("tuesday in row"  + QString::number(i));      tmp.push_back("wensday in row"  + QString::number(i));      tmp.push_back("thursday in row" + QString::number(i));      tmp.push_back("friday in row"   + QString::number(i));      tmp.push_back("sateday in row"  + QString::number(i));      tmp.push_back("sunday in row"   + QString::number(i));      tableDate.insert(i, tmp);  }  //取值可以这样  QList<Qstring> result;  result = tableDate.value(3);  for(int i = 0; i < reslut.length; i ++)  {      qDebug() << result[i] + " ";  }  

    你还可以这样,类似于数据库操作一样

    [cpp] view plain copy QMapIterator<int, QList<QString> > iter(tableDate);  QList<QString> whatDate;  while(iter.hasNext())  {      iter.next();      if(whatDate = iter.value())      {          qDebug() << whatDate[0];          qDebug() << whatDate[1];          qDebug() << whatDate[2];          qDebug() << whatDate[3];      }  }  FROM:  http://blog.csdn.net/conquerwave/article/details/46453299

    QMap如何以QList作为键值

    在开发中常会用到比较复杂的容器时,QMap QList会嵌套使用. 在VC6中定义 QMap<QString,QList<CHisDataItem>> map,编译时老报map未定义的错误. 

         这是因为VC把>>当作一操作符了,以为map是一变量,所以编译出错. 我们重新命名一下就能解决这个问题.      

    Cpp代码   // 方法一,起别名   typedef QList<CHisDataItem> HisDataList;   QMap<QString,HisDataList> map;       // 方法二, 在QList<>类型后加一空格    QMap<QString,QList<CHisDataItem> > map; 

    from: http://blog.csdn.net/xiaozhu2hao/article/details/43730333、

    QVector QList QMap 复杂容器使用

    在开发中常会用到比较复杂的容器时,QMap QList会嵌套使用. 在VC6中定义 QMap<QString,QList<CHisDataItem>> map,编译时老报map未定义的错误. 

         这是因为VC把>>当作一操作符了,以为map是一变量,所以编译出错. 我们重新命名一下就能解决这个问题.     

     

    Cpp代码   // 方法一,起别名   typedef QList<CHisDataItem> HisDataList;   QMap<QString,HisDataList> map;       // 方法二, 在QList<>类型后加一空格    QMap<QString,QList<CHisDataItem> > map; 

    FROM: http://blog.csdn.net/lanshengsheng2012/article/details/40918505

    转载请注明原文地址: https://ju.6miu.com/read-1201956.html
    最新回复(0)