Seite 1 von 1

Daten hierarchisch darstellen + teilweise editierbar

Verfasst: 22. Juli 2011 14:57
von antimatter
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

Re: Daten hierarchisch darstellen + teilweise editierbar

Verfasst: 25. Juli 2011 08:51
von archer
Ein anderer Ansatz wäre, die Items editierbar zu machen. Aber dann sind alle Spalten der Items editierbar und das sollte nicht sein.
Du kannst für jedes Item über setFlags() das Editieren steuern. Siehe Doku.

Wenn es sehr viele Daten werden, würde ich schon eher ein QTreeView mit einem eigenen Modell verwenden.
Dafür gibt es in der Doku auch ein Beispiel: Simple Tree Model.