Fragen zum QAbstractTableModel und QSortFilterProxyModel Geb
Verfasst: 11. Juli 2014 22:32
Hallo!
Ich bin relativ neu bezüglich der Verwendung des Model/View Systems und versuche
eine Liste von Datensätze damit zu implementieren.
Ich habe zwei Listen (eine lokale und eine globale) welche ich zusammen in
einer Liste anzeigen möchte. Diese Liste zeigt dann alle verfügbaren Datensätze
(genauer gesagt dessen Namen) an und bei einem Doppelklick öffnet sich ein
neuer Dialog, in welchem die gesamten Daten dieses Datensatzes bearbeitet werden
können.
Da diese Liste lang werden kann, möchte ich sie sortieren und optional noch
filtern. Daher verwende ich ein ProxyModel.
Mein Test-Code ist beigefügt.
Nun meine Fragen:
1) Ist dies der richtige Weg dies zu implementieren oder mache ich es jetzt
schon fundamental falsch? Gibt es einen besseren Weg?
2) In meinem Code verwenden ich
proxyModel->sort(1, Qt::AscendingOrder);
um die Sortierreihenfolge zu setzen. Dies scheint aber keine Auswirkungen
zu haben, da es noch immer absteigend sortiert wird. Warum?
3) Wenn ich einen Eintrag ändern, so wird dieser zwar geändert aber nicht
korrekt einsortiert, d.h. die Liste wird nicht neu sortiert. Wenn ich
reset() verwende, dann verliere ich die Auswahl. Was ist hier falsch?
4) Wenn ich einen Eintrag lösche, so rufe ich "beginResetModel()" und
"endResetModel()" auf. Gibt es hier einen besseren Weg ein korrekten
Update der Liste zu erzwingen?
Im Code sind einige auskommentierte Zeilen. Diese stellen Versuche dar,
welche aber alle nicht funktioniert haben.
Bin über jeden Tip oder Hinweis dankbar. Wenn sich allerdings jemand einmal
den Code intensiv ansehen könnte, wäre ich begeistert...
Danke
Sven
Ich bin relativ neu bezüglich der Verwendung des Model/View Systems und versuche
eine Liste von Datensätze damit zu implementieren.
Ich habe zwei Listen (eine lokale und eine globale) welche ich zusammen in
einer Liste anzeigen möchte. Diese Liste zeigt dann alle verfügbaren Datensätze
(genauer gesagt dessen Namen) an und bei einem Doppelklick öffnet sich ein
neuer Dialog, in welchem die gesamten Daten dieses Datensatzes bearbeitet werden
können.
Da diese Liste lang werden kann, möchte ich sie sortieren und optional noch
filtern. Daher verwende ich ein ProxyModel.
Mein Test-Code ist beigefügt.
Nun meine Fragen:
1) Ist dies der richtige Weg dies zu implementieren oder mache ich es jetzt
schon fundamental falsch? Gibt es einen besseren Weg?
2) In meinem Code verwenden ich
proxyModel->sort(1, Qt::AscendingOrder);
um die Sortierreihenfolge zu setzen. Dies scheint aber keine Auswirkungen
zu haben, da es noch immer absteigend sortiert wird. Warum?
3) Wenn ich einen Eintrag ändern, so wird dieser zwar geändert aber nicht
korrekt einsortiert, d.h. die Liste wird nicht neu sortiert. Wenn ich
reset() verwende, dann verliere ich die Auswahl. Was ist hier falsch?
4) Wenn ich einen Eintrag lösche, so rufe ich "beginResetModel()" und
"endResetModel()" auf. Gibt es hier einen besseren Weg ein korrekten
Update der Liste zu erzwingen?
Im Code sind einige auskommentierte Zeilen. Diese stellen Versuche dar,
welche aber alle nicht funktioniert haben.
Bin über jeden Tip oder Hinweis dankbar. Wenn sich allerdings jemand einmal
den Code intensiv ansehen könnte, wäre ich begeistert...
Danke
Sven