[gelöst]Umsetzung QAbstractProxyModel
Verfasst: 2. August 2011 12:15
Hallo zusammen,
ich habe ein Baummodell (abgeleitet von QAbstractItemModel), das meine Daten kapselt. Jedes Objekt in meinem Baum ist eine Eigenschaft und hat einen Namen (Property) und einen Wert (Value). Die Anzahl der Objekte (Eigenschaften) pro Zeile variert, es sind aber immer mindestens 2 Objekte.
SOURCEMODEL:(QAbstractItemModel)
A1 A2 A3
+ B1 B2 B3 B4 B5 B6
+ C1 C2
+ D1 D2 D3 D4
Im ersten Schritt habe ich ein ProxyModel von QSortFilterProxyModel abgeleitet. Damit stelle ich meine Daten in einem TreeView als Übersicht dar, jedoch filter ich lediglich die ersten zwei Eigenschaften heraus.
ANSICHT ALS BAUM:(QSortFilterProxyModel)
A1 A2
+ B1 B2
+ C1 C2
+ D1 D2
Jetzt möchte ich einen zweiten View (Table) haben, der mir die Daten als Tabelle mit 2 Spalten aufbereitet darstellt, wobei aber immer nur eine Reihe der Quelle (SOURCEMODEL) betrachtet wird. Die Tabelle soll aber die gesamte Reihe abbilden.
ANSICHT ALS TABELLE:
A1->property, A1->value
A2->property, A2->value
A3->property, A3->value
Mein TreeView funktioniert prima, da ich von dem QSortFilterProxyModel lediglich columnCount() und data() implementieren musste. Die Umsetzung der ModelIndexe wird mir komplett abgenommen...
Nun zu meiner Frage bzw. zu meinem Verständnisproblem:
Ich habe nicht verstanden, wie ich mapToSource() bzw mapFromSource() zu implementieren habe. Ich weiss, das ich mir irgendwie eine Map oder ähnliches aufbauen muss um die unterschiedlichen ModelIndexe zu konvertieren, aber ich weiss nicht an welcher Stelle ich eine solche Map erstelle bzw. wann und wo sie aktualisiert wird.
Hat jemand vielleicht ein einfaches Beispiel oder kann es mir anders verständlich machen?
Vielen Dank in die Runde.
ich habe ein Baummodell (abgeleitet von QAbstractItemModel), das meine Daten kapselt. Jedes Objekt in meinem Baum ist eine Eigenschaft und hat einen Namen (Property) und einen Wert (Value). Die Anzahl der Objekte (Eigenschaften) pro Zeile variert, es sind aber immer mindestens 2 Objekte.
SOURCEMODEL:(QAbstractItemModel)
A1 A2 A3
+ B1 B2 B3 B4 B5 B6
+ C1 C2
+ D1 D2 D3 D4
Im ersten Schritt habe ich ein ProxyModel von QSortFilterProxyModel abgeleitet. Damit stelle ich meine Daten in einem TreeView als Übersicht dar, jedoch filter ich lediglich die ersten zwei Eigenschaften heraus.
ANSICHT ALS BAUM:(QSortFilterProxyModel)
A1 A2
+ B1 B2
+ C1 C2
+ D1 D2
Jetzt möchte ich einen zweiten View (Table) haben, der mir die Daten als Tabelle mit 2 Spalten aufbereitet darstellt, wobei aber immer nur eine Reihe der Quelle (SOURCEMODEL) betrachtet wird. Die Tabelle soll aber die gesamte Reihe abbilden.
ANSICHT ALS TABELLE:
A1->property, A1->value
A2->property, A2->value
A3->property, A3->value
Mein TreeView funktioniert prima, da ich von dem QSortFilterProxyModel lediglich columnCount() und data() implementieren musste. Die Umsetzung der ModelIndexe wird mir komplett abgenommen...
Nun zu meiner Frage bzw. zu meinem Verständnisproblem:
Ich habe nicht verstanden, wie ich mapToSource() bzw mapFromSource() zu implementieren habe. Ich weiss, das ich mir irgendwie eine Map oder ähnliches aufbauen muss um die unterschiedlichen ModelIndexe zu konvertieren, aber ich weiss nicht an welcher Stelle ich eine solche Map erstelle bzw. wann und wo sie aktualisiert wird.
Hat jemand vielleicht ein einfaches Beispiel oder kann es mir anders verständlich machen?
Vielen Dank in die Runde.