[Qt4] TreeModel:QAbstractItemModel

Alles rund um die Programmierung mit Qt
Antworten
Angyrtis
Beiträge: 5
Registriert: 5. Dezember 2007 17:28

[Qt4] TreeModel:QAbstractItemModel

Beitrag 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
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag 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
Angyrtis
Beiträge: 5
Registriert: 5. Dezember 2007 17:28

Beitrag von Angyrtis »

Danke, und wie erstelle ich eine "kind"table? :)

Gruß, A
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.)
Antworten