Hallo zusammen,
Zum Hintergrund:
Mein Modell wird aus einer (XML-)Datei generiert. Diese enthält 4 Kategorien, in welchen einzelne Elemente stecken. Jede Kategorie wird derzeit in ein eigenes Modell (von QStandardItem abgeleitet) überführt und im UI von einem eigenen View angezeigt. Das funktioniert auch alles wunderbar.
Nun ist aber eine Kategorie sehr viel umfangreicher, sodass ich mich entschlossen habe deren Elemente in vier eigenen Views darzustellen (1 QTreeView und 3 QTableViews), damit es für den Nutzer übersichtlicher wird.
Das QTreeView soll dem Nutzer einen Überblick anbieten, wo er sich gerade im XML-Baum befindet. Allerdings sollen hier nicht alle Elemente (insbesondere deren Attribute), sondern nur bestimmte angezeigt werden. Zu diesem Zweck habe ich einen Filter eingebaut (von QSortFilterProxyModel abgeleitet), der die irrelevanten Elemente für den QTreeView ausblendet. (Teilweise müssen Großeltern und Kinder angezeigt werden, nicht aber die Eltern)
Die anderen QTableViews, die genau diese ausgeblendeten Elemente (und nichts anderes) anzeigen sollen, erfahren über ein Signal, zu welchem Element sie dessen Attribute anzeigen sollen. Auch dies funktioniert sehr gut. Allerdings werden in den QTableViews immer der falsch Header angezeigt, weil er ja auf dem Gesamtmodell beruht.
Um dieses Problem zu lösen, habe ich QSortFilterProxyModel abgeleitet und wollte darin ein eigenes Mapping erstellen, sodass ich je nach View ein anderes ProxyModel (mit anderem Header) erhalte.
Allerdings wird mir dabei nichts in den Views angezeigt. Auch mit Hilfe der Dokumentation ist mir noch nicht ganz klar, welche Funktionen ich überschreiben muss, damit es funktioniert. Weiß da jemand genaueres bzw. wo ich Details dazu erfahre?
Oder ist mein Ansatz einfach Käse und es gibt eine einfacherere Lösung, die ich bisher übersehen habe. (z.B.: Für jeden View ein eigenes Modell, oder ähnliches)
P.S.: Code dazu liefere ich gerne nach, wenn es konkret wird, aber derzeit weiß ich nicht, was genau relevant ist und zuviel Code finde ich persönlich immer abschreckend.