Model/View SQLTable nach TreeView
Verfasst: 18. März 2009 21:06
Hallo
folgende Aufgabenstellung:
ich habe eine SQL-Tabelle bestehend aus einer Primary-Key-Spalte und mehreren weiteren Spalten.
Die SQLTable kann ich ja problemlos in ein SQLTableModel einlesen und in einem TableView darstellen.
Aber die Aufgabe ist es nun, die Tabelle in einem TreeView darzustellen gruppiert nach Spalten.
Beispiel:
Tabelle "Obst"
View soll wahlweise zeigen:
oder
Bei Anklicken eines Elementes der tiefsten Ebene soll der Primary Key der entsprechenden Zeile zurückgegeben werden, bei Editieren eines solchen Items die entsprechende Zeile im Model (und damit in der Datenbank) geändert werden. Wird hingegen eine Ebene mit child-nodes angeklickt, sollen alle Primary Keys der childs ausgegeben werden, wird dieser node editiert, sollen alle child-Zeilen entsprechend geändert werden. (wenn also in letzterem Beispiel 'rot' auf 'red' geändert wird, sollen beide Zeilen entsprechend geändert werden. Entsprechend soll bei Löschen eines Items vorgegangen werden, also Löschen eines Items der tiefsten Ebene führt zu Löschen dieser Zeile, Löschen eines Items einer höheren Ebene zum Löschen einer Gruppe von Zeilen.
Welche Spalte Primary Key ist und in welcher Reihenfolge gruppiert werden soll, diese Information liegt in einer QStringList der Spaltenüberschriften (erstes Listenelement ist PK, danach soll in Reihenfolge der Listenelemente gruppiert werden...)
Ich vermute, dass ich dafür ein QProxyModel einsetzen muss? Oder gibt es andere Vorschläge?
Die Aufgabe scheint mir so "originell" nicht zu sein, auch wenn ich in der Doku nichts vergleichbares fand, gibt es irgendwo ein Programmbeispiel, bei dem man sich was dazu abgucken kann?
Danke
Markus
folgende Aufgabenstellung:
ich habe eine SQL-Tabelle bestehend aus einer Primary-Key-Spalte und mehreren weiteren Spalten.
Die SQLTable kann ich ja problemlos in ein SQLTableModel einlesen und in einem TableView darstellen.
Aber die Aufgabe ist es nun, die Tabelle in einem TreeView darzustellen gruppiert nach Spalten.
Beispiel:
Tabelle "Obst"
Code: Alles auswählen
id (PK) | Sorte | Farbe
----------------------------
1| Apfel | rot
2| Apfel | grün
3| Birne | rot
4| Birne | grün
Code: Alles auswählen
(root)
- Apfel
- rot 1
- grün 2
- Birne
- rot 3
- grün 4
Code: Alles auswählen
(root)
- rot
- Apfel 1
- Birne 3
- grün
- Apfel 2
- Birne 4
Welche Spalte Primary Key ist und in welcher Reihenfolge gruppiert werden soll, diese Information liegt in einer QStringList der Spaltenüberschriften (erstes Listenelement ist PK, danach soll in Reihenfolge der Listenelemente gruppiert werden...)
Ich vermute, dass ich dafür ein QProxyModel einsetzen muss? Oder gibt es andere Vorschläge?
Die Aufgabe scheint mir so "originell" nicht zu sein, auch wenn ich in der Doku nichts vergleichbares fand, gibt es irgendwo ein Programmbeispiel, bei dem man sich was dazu abgucken kann?
Danke
Markus