Eigenes View initialisieren

Alles rund um die Programmierung mit Qt
Antworten
orpheus
Beiträge: 2
Registriert: 23. Januar 2009 11:40

Eigenes View initialisieren

Beitrag von orpheus »

Hi,

ich habe das tolle Model/View Konzept aus qt verwendet und ein eigenes TreeModel erstellt, welches von QAbstractItemModel abgeleitet ist. Dieses läßt sich ohne Problem in einem QTreeView darstellen. Allerdings benötige ich mein eigenes View, um die Daten darzustellen, eine Verwendung eines vorhandenen Views evtl. mit eigenen Delegates ist leider nicht ausreichend.

Nun gibt es in der Doku zu qt leider keinerlei Info's, wie man ein eigenes View erstellt, nur das Beispiel von PieChart. Allerdings wird dem PieChart erst das Model übergeben und dann die Daten im Model geändert, sodass ::dataChanged aufgerufen wird.

Habe ich allerdings die Daten bereits geladen, funktioniert dies nicht. Da dies aber mit QTreeView klappt, müssten dort entweder in setModel die Daten geladen werden oder durch irgend ein event. Beides konnte ich allerdings nicht finden.

Hat jemand eine Idee oder schonmal ein ähnliches Problem ? Im Forum konnte ich leider nichts dazu finden und sonst im Web auch nicht.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ich hab mir den PieChart mal vorgenommen. Wenn ich das Model befülle, bevor ich es dem View zuweis, seh ich auch nix geändertes.

Das liegt einfach daran, dass der Wert, der für validItems gesetzt wird, noch 0 ist, und in paintEvent nur gezeichnet wird wenn validItems > 0.
Wenn du für das view die Methode setModel überschreibst und dabei die Werte etsprechend der Daten im Model setzt, sollte wieder alles passen.

Wenn also dein View viel von dem Code aus PieChart verwendet, versuch das mal mit setModel() überschreiben.

Grüße
Franz
orpheus
Beiträge: 2
Registriert: 23. Januar 2009 11:40

Beitrag von orpheus »

danke, so hab ichs inzwischen auch gemacht. Irgendwie hatte ichs mir allerdings einfacher vorgestellt, dass ein TreeModel geparst wird. Die passenden Interfaces wären wohl eher in QTreeView zu finden, was mir dann zum Ableiten allerdings zu mächtig ist.
Antworten