Question

Dans mon application Qt, cet objet est rempli avant la configuration du contenu de mon QTreeWidget:

QList<QTreeWidgetItem*> items;

Je remplis la QList de la manière suivante:

QVariant qv; // I need this for "attaching" to the item my linuxPackage object
qv.setValue(linuxPackage);
packRow->setData(1, Qt::UserRole,qv); // packRow is my own object inherited from QTreeWidgetItem, I "put" the QVariant into it
items.append(packRow); // then I put my item into the QList

à la fin du travail, ma liste QList contient près de 1000 éléments.

Je dois les parcourir et pour chaque élément, il me faut le "linuxPackage". données par cette méthode (testée et opérationnelle):

Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object

J'ai donc essayé d'extraire les données nécessaires de cette manière:

QList<QTreeWidgetItem*>::iterator iter; 
for (iter = items.begin(); iter != items.end(); ++iter){
    Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}

Mais rien ne fonctionne, je ne peux même pas obtenir la compilation du programme. Aidez-moi! : D

Était-ce utile?

La solution

Peut-être:

(*iter)->data(1,Qt::UserRole).value<Pkg>();

BTW, un moyen plus simple de le faire avec Qt4:

foreach (const QTreeWidgetItem *item, items) {
    Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}

à tout le moins, vous devriez utiliser const_iterators =)

QList<QTreeWidgetItem*>::const_iterator iter; 
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
    ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top