Model-View mit verschiedenen Klassen in einem Model?

Alles rund um die Programmierung mit Qt
Antworten
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Model-View mit verschiedenen Klassen in einem Model?

Beitrag von dusti »

Ich habe Daten, die hirarchisch in 3 Klassen organisiert sind, bspw:
-a
--b
---c
---c
---c
--b
---c
-a
--b
---c

Die Klasse a enthält also eine Liste der Klasse b, die wiederum eine Liste der Klasse c hat. Nun möchte ich diese Struktur in einem Treeview darstellen, weiss aber nicht, wie ich es anstelle die 3 verschiedenen Klassen in ein Model zu packen. Im Internet finde ich nur Tutorials bei denen dies mit genau einer Klasse erklärt wird, was mir aber nicht wirklich weiterhilft.
Was ich erreichen will ist eine Ordnerähnliche Struktur, wobei die "äusserste" Ebene aus den Elementen der Klasse a besteht, die jeweils entsprechend ihrer Liste von Objekten der Klasse b unterebenen enthalten, die wiederum Unterebenen der Klasse c enthalten. Hat jemand einen Tipp wie das gehen könnte oder vielleicht sogar einen Link? Wie gesagt habe ich schon selber gesucht, aber ich konnte nichts finden.

Danke schonmal im Vorraus!

dusti
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du kannst doch für A, B und C eine gemeinsame Basisklasse verwenden.
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Beitrag von dusti »

Danke, das wäre natürlich eine Möglichkeit, aber da die 3 Klassen nicht wirklich etwas gemeinsam haben, würde ich es gerne vermieden, sie alle von der selben Basisklasse erben zu lassen, nur damit ich sie im Model gut benutzen kann. Das müsste doch eigentlich auch anders gehen, denn ich glaube kaum, dass ich der Einzige bin, der dieses Problem hat.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Naja.. Ein TreeItem muss ja nicht unbedingt die Daten "sein", sondern vielmehr "representieren". Ein TreeItem, welches ein Verzeichnis in einem Dateisystem darstellt ist ja kein Verzeichnis, sondern representiert es lediglich.

Mit anderen Worten: es spielt bei einem TreeView keine Rolle, woher die Daten kommen. Hauptsache man hat einen Baum von Items, die die anzuzeigenden Daten organisieren können.. In deinem Fall würde es doch Sinn machen, drei unterschiedliche Item-Klassen bereitzustellen, welche jeweils die konkreten Nodes kennen (einen Pointer darauf besitzen und bei Bedarf die anzuzeigenden Daten dort abruft):

Code: Alles auswählen

view
  |
 \/
model
  |
 \/
_______
-ItemA     ->  -a
--ItemB    ->  --b
---ItemC  ->  ---c
---ItemC  ->  ---c
---ItemC  ->  ---c
--ItemB    ->  --b
---ItemC  ->  ---c
-ItemA     ->  -a
--ItemB    ->  --b
---ItemC  ->  ---c 
hth..
Antworten