2014-12-25 5 views
1

Например:Как использовать итераторы java-стиля вместо stl-стиля в Qt?

QList<QMap<QString,QString> > list 

QList<QMap<QString,QString> >::iterator i; 
    for (i = list.begin(); i != list.end(); ++i) 
    { 
     QMap<QString,QString>::iterator j; 
     for (j = i->begin(); j != i->end(); ++j) 
      qDebug() << j.key() << ": " << j.value() << endl; 
    } 

Так это СТЛ-стиль работает. Но я не могу переписать в стиле Java:

QListIterator<QMap<QString,QString> > i(list); 
    while (i.hasNext()) 
    { 
     QMapIterator<QString,QString> j(i); //error 
     while (j.hasNext()) { 
      j.next(); 
      qDebug() << j.key() << ": " << j.value() << endl; 
     } 
    } 

Здесь я получаю ошибку - cannot convert parameter 1 from QListIterator<T>' to 'const QMap<Key,T>

+0

Мой ответ разрешил проблему для вас? – lpapp

ответ

1

Вы должны получить следующий элемент при использовании итераторов Java стиль следующим образом:

QMapIterator<QString,QString> j(i.next()); //no error