2010-08-12 5 views
2

Je ne peux pas déréférencer un QMutableListIterator comme un itérateur STL - avec * it. J'essaie d'utiliser QMutableListIterator :: value() mais mon programme se bloque. Quel est le bon moyen de le faire?Récupère l'élément actuel de QMutableListIterator

QFileInfoList files; 
// populate list 
QListIterator<QFileInfo> it(files); 
it.toFront(); 
QFileInfo = it_top.value(); 
// crash 

L'erreur est

ASSERT: "item_exists()" in file /usr/include/qt4/QtCore/qlist.h, line 778 

Merci

+0

pouvez-vous poster du code avec lequel vous pouvez reproduire le problème? – Naveen

+0

Oui, en fait, j'ai raté quelque chose. Accrochez-vous – MVG

+0

@MVG: Je ne connais pas Qt, mais est-il initialisé correctement? – Naveen

Répondre

2

Je viens de vérifier la documentation Qt pour "toFront" et il dit:

Déplace l'itérateur à l'avant de la conteneur (avant le premier article).

http://doc.trolltech.com/latest/qmutablelistiterator.html#toFront

Qt itérateurs sont itérateurs de style Java qui commencent avant les éléments et se termine le dernier élément, les itérateurs de style C++ commencent sur le premier point et se termine après le dernier.

0

Il n'y a rien de mal avec le code que vous avez montré.

Le problème réside en fait dans // populate list

En fait Je suppose queaucun élément se peuplé dans le QFileInfoList. C'est pourquoi vous obtenez le ASSERT lorsque vous essayez d'y accéder.

Et vérifiez la valeur de retour hasNext(). Le plus souvent, il retournera faux.

Espérons qu'il aide en quelque sorte ..

+0

Salut, merci. hasNext() fonctionne bien, et la liste est définitivement remplie ok. L'évaluation de @ Haplo est juste, je pense – MVG

Questions connexes