Seite 1 von 1

[Qt4] TreeModel:QAbstractItemModel

Verfasst: 5. Dezember 2007 22:15
von Angyrtis
Hallo,

ich habe ein paar Startschwierigkeiten mit dem QAbstractItemModel. Ich versuche schon einige Tage verzweifelt ein TreeModel zu bauen, welches direkt vom QAbstractModel abgeleitet ist - ähnlich dem des Qt4Examples "SimpleTreeModel". Mein Unterschied zu diesem Beispiel ist, dass ich keine Datei habe, die ich einfach einlese und die schon schön vorstrukturiert ist. Weiterhin arbeite ich nicht mit Listen, sondern mit reinen Strings (noch... später kommen noch Pointer auf Objekte bzw. IDs dazu, damit ich in einem anderen Widget die im QTreeView angewählten Objekte angezeigt bekomme. Die Strings sind übrigens die Namen dieser Objekte...)
Bei mir ist der Fall, dass ich von einer Funktion eine Reihe Strings übergeben bekomme, und diese dann nach diversen Kriterien dann in meinen Baum einfügen will... Ich stehe ganz schön auf dem Schlauch, habe noch kein Beispiel gefunden, welches etwas ähnliches macht, wie ich... Entweder man trifft auf schön vorgefertigte Modelle, oder es wird an einer Verzeichnisstruktur erklärt, die dann aber das DirModel zur Hilfe nimmt... Irgendwie hat mir daher kein Tutorial, was ich fand, weiter geholfen (dabei kann das doch nicht so schwer sein *grml*)

Ich habe keine Ahnung, wie ich anfangen soll. Über einen kleinen Einstieg würde ich mich sehr freuen, da ich echt nicht mehr weiter komme... Ich möchte kein wer weiß wie komplexes Programm. Nur eine Ansicht eines Modells ins Stringform: Eine Root, und da einfach ein paar Strings "reinhängen". Komplexer wirds dann noch, aber ich versuche derzeit nur das Model zu verstehen, dann habe ich - hoffe ich - die Hürde (oder Denkblockade) überwunden - oder einen Link zu einen wirklich hilfreichen Tutorial wäre auch ok :).

Angenommen, ich habe folgende Daten:

string0 bis string7, die ich folgendermaßen angeordnet haben will, was muss ich tun?:

string0
L string1
| Lstring5
L string2
| L string3
| Lstring4
| Lstring6
L string7

Vielen Dank im Voraus,
Angyrtis

Verfasst: 6. Dezember 2007 14:53
von nando
Hi,

wie du die daten intern verwaltet bleibt die überlassen...

zb.:

QMap<QString /*key*/, QStringList /* values*/>

du musst dann in deiner von QAbstractItemModel abgeleiteten Klasse die
entsrpechenden Methoden überschreiben (data, setData usw) und die Daten zur verfügung stellen.


Gruss,
Nando

Verfasst: 6. Dezember 2007 17:40
von Angyrtis
Danke, und wie erstelle ich eine "kind"table? :)

Gruß, A

Verfasst: 6. Dezember 2007 18:14
von upsala
Ich beziehe mich jetzt mal auf das SimpleTreeModel-Demo:

Ein TreeItem hat doch ein appendChild(TreeItem *). Somit kannst du in jedes TreeItem ein weiteres TreeItem einfügen.

Was diese Demo nicht zeigt, ist wie man das während 'des laufenden Betriebs' macht. (Es fehlten die InsertRows usw.)