Seite 1 von 1

Unterscheidung von TreeItems

Verfasst: 26. August 2007 18:23
von D_ron
Hallo!

Ich habe ein TreeItem welches unterschiedliche Childs besitzt.
Die Unterscheidung der Childs habe ich über einen frei wählbaren Typ gemacht, den man im Kontruktor mitgeben kann.
Im Detail handelt es sich um eine Artikelliste.
Beispiel Artikel A gibt es mehrmals in meiner Liste und er hat besitzt noch weitere Details welche von Artikel A zu Artikel A unterschiedlich sind.
Diese Details sind in einer Struktur hinterlegt, soweit also kein Problem.
Die Frage ist nur wie ich die Zuordnung der Artikeldetails zum TreeItem am besten realisieren soll?!
Sprich wenn ich Artikel A Auswähle benötige ich einen Verweis zur jeweiligen Sturktur. Gibt es da einen Trick oder eine empfohlene Vorgehensweise?
Ein kleiner Schnipsel Code würden mir sicher nicht schaden, falls das möglich ist, weil ich momentan den Wald vor lauter Bäumen nicht mehr sehe.

:wink:

Danke vielmals!

Verfasst: 27. August 2007 00:36
von FaS
Aus der Doku:

void QTreeWidgetItem::setData ( int column, int role, const QVariant & value ) [virtual]
QVariant QTreeWidgetItem::data ( int column, int role ) const [virtual]

Beispiel für benutzerdefinierte Typen, da QVariant diesbezüglich recht hässlich ist. So mach ich das immer, keine Ahnung ob das nun optimal bzw. sauber ist usw., es funktioniert jedenfalls:

Code: Alles auswählen

QTreeWidgetItem *item;
MyData *data;
Setzen:

Code: Alles auswählen

item->setData( 0, Qt::UserRole, QVariant::fromValue<void*>( data ) );
Lesen:

Code: Alles auswählen

data = reinterpret_cast<MyData*>( item->data( 0, Qt::UserRole ).value<void*>() );