Problema con QVariant / QTreeWidgetItem / iterator en qt4.4.3
-
03-07-2019 - |
Pregunta
En mi aplicación qt tengo este objeto, lleno antes de configurar el contenido de mi QTreeWidget:
QList<QTreeWidgetItem*> items;
Relleno el QList de esta manera:
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
al final del trabajo, mi QList tiene casi 1000 artículos.
Necesito iterar sobre ellos y para cada elemento necesito obtener el " linuxPackage " Datos por este medio (probado y en funcionamiento):
Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object
Por lo tanto, he estado tratando de extraer los datos necesarios de esta manera:
QList<QTreeWidgetItem*>::iterator iter;
for (iter = items.begin(); iter != items.end(); ++iter){
Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}
Pero nada funciona, ni siquiera puedo compilar el programa. ¡Ayuda! : D
Solución
Quizás:
(*iter)->data(1,Qt::UserRole).value<Pkg>();
Por cierto, una forma más fácil de hacer esto con Qt4:
foreach (const QTreeWidgetItem *item, items) {
Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}
como mínimo, debe usar const_iterators
=)
QList<QTreeWidgetItem*>::const_iterator iter;
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow