Frage

In meinem qt app ich dieses Objekt haben, gefüllt, bevor meine QTreeWidget Inhalt einrichten:

QList<QTreeWidgetItem*> items;

Ich fülle den QList auf diese Weise:

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

am Ende der Arbeit, mein QList hat fast 1000 Gegenstände.

Ich brauche über ihnen zu wechseln und für jedes Element muss ich die „linuxPackage“ Daten durch dieses erhalten (getestet und funktioniert) Art und Weise:

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

Also, ich habe versucht, benötigten Daten durch diese Art und Weise zu extrahieren:

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

Aber nichts funktioniert, kann ich nicht einmal das Programm Compilierung bekommen. Hilfe! : D

War es hilfreich?

Lösung

Vielleicht:

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

BTW, ein einfacher Weg, dies zu tun mit Qt4:

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

zumindest sollten Sie verwenden const_iterators =)

QList<QTreeWidgetItem*>::const_iterator iter; 
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top