MVC - mit einem QTreeView

Alles rund um die Programmierung mit Qt
Antworten
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

MVC - mit einem QTreeView

Beitrag von tribari »

Hallo Leute,

also ich versuche mich grade ein wenig ins MVC einzuarbeiten. Habe damit bisher auch nur Erfahrung in der Verwendung eines QAbstractListModel angezeigt auf einer QTreeView - also nur Zeilenweise.

Nun habe ich jedoch ein etwas komplexeres Projekt in welchem ich das MVC gerne wieder einsetzen würde - jedoch fehlt mir hier irgendwie die richtige Herangehensweise...

Folgende Ausgangssituation:

Code: Alles auswählen

|_ Verzeichnis 1
    |_ Unterverzeichnis 1 = Auftrag 1
        |_ Unterverzeichnis 1 = Daten zum Auftrag 1
        |_ Unterverzeichnis 2 = Daten zum Auftrag 1
        |_ Unterverzeichnis 3 = Daten zum Auftrag 1
    |_ Unterverzeichnis 2 = Auftrag 2
        |_ Unterverzeichnis 1 = Daten zum Auftrag 2
        |_ Unterverzeichnis 2 = Daten zum Auftrag 2
    |_ Unterverzeichnis ... = Auftrag ...
        |_ Unterverzeichnis 1 = Daten zum Auftrag ...
|_ Verzeichnis 2
    |_ Unterverzeichnis ... = Auftrag ...
        |_ Unterverzeichnis 1 = Daten zum Auftrag ...
|_ Verzeichnis ...
    |_ Unterverzeichnis ... = Auftrag ...
        |_ Unterverzeichnis 1 = Daten zum Auftrag ...
Es soll möglich sein beiliebig viele Auftragsordner hinzuzufügen - in jedem dieser Ordner gibt es gewisse Unterordner welche als Auftrag erkannt werden (durch die Benennung).
Ein Auftrag enthält spezifische Informationen, welche innerhalb einer Datei, welche direkt im Auftrag liegt, stehen.
Desweiteren hat ein Auftrag noch Unterordner mit Daten zum Auftrag. Diese Unterordner können aber auch komplett ohne den Auftrag existieren. Auch hier gibt es wieder spezifische Informationen welche innerhalb einer Datei bereitgestellt werden.

Das ganze würde ich gerne in einem QTreeView darstellen - jedoch weiss ich nicht wirklich wie ich das Model aufbauen soll - geschweige denn, wie ich am vernünftigsten die Daten hinter dem Model strukturieren soll.
Die Examples von QT helfen mir leider hier nicht so ganz weiter...

Habt ihr evtl. Tips oder eine Art Tutorial parat welche/-s mir evtl. weiter helfen kann?

lg

Tribari
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Hi schon mal "editabletreemodel" angesehen?
Sollte eigentlich machen was DU suchst.
Dateianhänge
test.PNG
test.PNG (16.88 KiB) 3305 mal betrachtet
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Beitrag von tribari »

Danke das hat mir schonmal geholfen ;-)
irgendwie hatte ich dieses Beispiel übersehen...

okay habe nun mein model aufgebaut bekommen... habe noch mit QSortFilterProxyModel eine Sortiermöglichkeit geschaffen...

Jedoch habe ich nun noch einen Wunsch welcher die View betrifft... und hier weiss ich grad wieder nicht weiter:

Wenn der User auf ein Item clickt welches Childs besitzt soll sich dieses Item gleich aufklappen in meinem TreeView...
Desweiteren wäre es toll wenn sich alle bereits aufgeklappten Items dann automatisch schließen... so das nur das, derzeit aktive Item, aufgeklappt zeigt.
Und noch besser wäre es wenn das selektierte Item nach ganz oben gescrollt wird... so das das derzeit gewählte item immer oben ist. (nicht sortierung - sondern nur darstellung... also hochscrollen bis das item oben ist).

wie kann ich dies erreichen?

mfg

tribari
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

wenn du auf was clickst ändert sich das currentItem der View void QAbstractItemView::activated ( const QModelIndex & index ) [signal] ... connecte das Signal an nen Slot, im slot setExpandest(false) du das letzte currentitem (zwischenspeichern oder einfach alle toplevenitems) und dann setExpand(true)est du das neue currentitem und alle seine childs ... fürs scrollen sollte dir void QAbstractItemView::scrollTo ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) weiterhelfen ...

[ironie] 3-5min QTreeView + QAbstractItemView API lesen bringen solche Perlen der Weisheit hervor ... [/ironie]
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Beitrag von tribari »

danke das hat geholfen,


manchmal sieht man den wald vor lauter bäumen nicht... und da das MVC noch ein wenig Neuland für mich ist, ist eh etwas schwieriger...

danke für die hilfe
Antworten