2009-01-05 7 views
2

Dans mon application qt j'ai cet objet, rempli avant de mon contenu de QTreeWidget:problème avec QVariant/QTreeWidgetItem/iterator sur qt4.4.3

QList<QTreeWidgetItem*> items; 

Je remplir le QList de cette façon:

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, mon QList a près de 1000 articles.

J'ai besoin de itérer sur eux et pour chaque élément que je besoin pour obtenir les données « linuxPackage » par ce (testé et fonctionnel) ainsi:

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

Alors, j'ai essayé d'extraire des 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 n'arrive même pas à compiler le programme. Aidez-moi! : D

Répondre

1

Peut-être:

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

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

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

à tout le moins, vous devez utiliser const_iterators =)

QList<QTreeWidgetItem*>::const_iterator iter; 
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){ 
    ... 
} 
Questions connexes