Problema con QVariant / QTreeWidgetItem / iteratore su qt4.4.3
-
03-07-2019 - |
Domanda
Nella mia app qt ho questo oggetto, riempito prima di impostare il contenuto del mio QTreeWidget:
QList<QTreeWidgetItem*> items;
Riempo la QList in questo modo:
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
alla fine del lavoro, la mia QList ha quasi 1000 articoli.
Devo scorrere su di essi e per ogni elemento ho bisogno di ottenere il "pacchetto linux" dati in questo modo (testato e funzionante):
Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object
Quindi, ho cercato di estrarre i dati necessari in questo modo:
QList<QTreeWidgetItem*>::iterator iter;
for (iter = items.begin(); iter != items.end(); ++iter){
Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}
Ma nulla funziona, non riesco nemmeno a compilare il programma. Aiuto! : D
Soluzione
Forse:
(*iter)->data(1,Qt::UserRole).value<Pkg>();
A proposito, un modo più semplice per farlo con Qt4:
foreach (const QTreeWidgetItem *item, items) {
Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}
almeno, dovresti usare const_iterators
=)
QList<QTreeWidgetItem*>::const_iterator iter;
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow