Problema com QVariant / QTreeWidgetItem / iterador em qt4.4.3
-
03-07-2019 - |
Pergunta
Em meu aplicativo qt tenho esse objeto, preenchido antes de configurar o conteúdo do meu QTreeWidget:
QList<QTreeWidgetItem*> items;
Eu preencher o QList por esta maneira:
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
no final do trabalho, o meu QList tem quase 1000 itens.
Eu preciso iterar sobre eles e para cada item que eu preciso para obter os dados "linuxPackage" por este (testada e funcionando) forma:
Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object
Então, eu tenho tentado extrair dados necessários por esta maneira:
QList<QTreeWidgetItem*>::iterator iter;
for (iter = items.begin(); iter != items.end(); ++iter){
Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}
mas nada funciona, eu não posso mesmo começar a compilação do programa. Socorro! : D
Solução
Talvez:
(*iter)->data(1,Qt::UserRole).value<Pkg>();
BTW, uma maneira mais fácil de fazer isso com Qt4:
foreach (const QTreeWidgetItem *item, items) {
Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}
no const_iterators
mínimo, você deve usar =)
QList<QTreeWidgetItem*>::const_iterator iter;
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow