Daten hierarchisch darstellen + teilweise editierbar

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
antimatter
User
Beiträge: 13
Registriert: Freitag 8. Oktober 2010, 16:44

Hallo,
für ein Programm möchte ich mir eine Gui erstellen, allerdings tu ich mich da mangels Erfahrung schwer, wie ich das am besten anstelle. Eventuell kann mir da geholfen werden (z.B. mit Tipps für mögliche Lösungsansätze).

Das erwähnte Programm erzeugt Daten, die ich hierarchisch darstellen möchte. Es gibt quasi ein paar Items, und jedes Item hat mehrere SubItems. Mehr als diese zwei Ebenen gibts nicht. Die SubItems sollen zudem mit einer Checkbox und einem Textfeld versehen werden. Das sieht z.B. so aus.

Code: Alles auswählen

1, Item
|-- [ ] 1, SubItem 1, [ Textfeld ]
|-- [ ] 2, SubItem 2, [ Textfeld ]
|-- [ ] 3, SubItem 3, [ Textfeld ]
2, Item
|-- [ ] 1, SubItem 1, [ Textfeld ]
|-- [ ] 2, SubItem 2, [ Textfeld ]
|-- [ ] 3, SubItem 3, [ Textfeld ]
Wie zu sehen ist, besitzt jedes Item eine Nummerierung. Diese soll möglichst isoliert auslesbar sein, so dass man sie nicht mittels Stringoperationen aus dem Itemtext rausfieseln muss.

Ich habe inzwischen mit dem QTreeWidget herumgespielt und kann diese Struktur auch halbwegs wiedergeben. Ein Textfeld hab ich aber nicht untergebracht. Es scheint mir auch nicht mit Boardmitteln möglich zu sein. Ein anderer Ansatz wäre, die Items editierbar zu machen. Aber dann sind alle Spalten der Items editierbar und das sollte nicht sein.
Irgendwo hab ich gelesen, dass man sich für individuelle Wünsche (wie die meinen *g*) das QAbstractItemModel ableiten und anpassen müsste. Allerdings fehlt mir dazu das Wissen, falls es der richtige Weg ist.

Gibt es außer dem QTreeWidget noch Möglichkeiten, wie man dies halbwegs schmerzfrei umsetzen kann?
Oder kennt jemand gute Literatur, die den Fokus auf verschiedene Präsentationsmöglichkeiten von Daten legt?

Ich bin dankbar für jede Hilfestellung.

Viele Grüße
antimatter
lunar

@antimatter: Das Model-View-Konzept von Qt ist in der Dokumentation ausführlich beschrieben. Ein eigenes Model erlaubt Dir, nur bestimmte Spalten editierbar zu machen.
Antworten