Qt: Undo Framework - Integrieren von Qt-eigenen Funktionen in den QUndoStack
-
Hallo,
ich schreibe gerade an einem Programm, das von Qts Undo-Framework Gebrauch machen soll. Dabei habe ich ein Problem, das ich seit einigen Stunden zu lösen versuche:
Im Programm gibt es ein QTableView (samt QStandardItemModel etc.). Nun lässt sich im TableView komfortabel ein Eintrag anwählen und editieren. Für das Editieren bietet Qt eingbaute Funktionen (das läuft wohl über QTableView -> QItemDelegate -> QItemEditorFactory), die ich nicht neu schreiben möchte bzw. kann.
Da ich nun mein gesamtes Programm mit einer Redo-/Undo-Funktionalität ausgestattet habe, muss ich dies auch beim Editieren schaffen - allerdings finde ich einfach keinen Weg dazu. Ich habe bereits einige Dinge versucht (eigene Klassen erstellt etc., damit ich den Fuß in die Tür bekomme), allerdings alles erfolglos.Hat irgendjemand einen Tipp? Gibt es für die Qt-eigenen Funktionen evt. einen Kniff, um auf vorhandene Undo-Funktionen zurückzugreifen?
-
Hm, gute Frage.
Bisher habe ich hier immer die Funktionalität in Actionklassen gepackt, welche diese dann auch wieder rückgängig machen können.
-
Mache ich natürlich auch so und das funktioniert auch gut. Nur an diesem Punkt (und noch zwei sehr ähnlichen) gibt es Schwierigkeiten, da Qt selbst wohl nicht für Nutzung mit dem UndoStack optimiert ist.
EDIT: Zumindest das oben beschriebene Problem konnte ich jetzt umgehen, aber eine bessere Lösung würde mich trotzdem noch interessieren.
Meine Lösung ist nun:
eine eigene Klasse erstellen, die von QStyledItemDelegate abstammt
die Funktion "setModelData" neu implementieren - ich habe einfach den vorhandenen Code kopiert und die ausschlaggebende Zeile durch neuen Code ersetzt