刚接触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会嵌套使用. 在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、
在开发中常会用到比较复杂的容器时,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