Seite 1 von 1
Undo-Framework: Push canceln, wie?
Verfasst: 2. August 2010 15:21
von mikemc
Hallöchen
Wenn ich im QUndoStack ein QUndoCommand 'pushe' und im QUndoCommand::redo() draufkomme, dass die gewünschte Aktion nicht zulässig ist, wie kann ich verhindern, dass das gerade ausgeführte QUndoCommand in den QUndoStack kommt, bzw. wie kann ich es nachträglich entfernen?
lg Michi aus Wien
Verfasst: 2. August 2010 16:39
von upsala
Überprüf halt erst, ob das Kommando überhaupt möglich ist, bevor du es in den Stack legst...
Verfasst: 2. August 2010 17:25
von mikemc
Das Problem ist, dass ich Funktionen im QUndoCommand::Redo() aufrufe, die Aktionen ausführen und einen Rückgabewert liefern, ob die Aktion erfolgreich ausgeführt worden ist oder nicht.
Verfasst: 12. August 2010 14:02
von odt
Hallo Michi
Das Undo-Framework von Qt unterstützt keine Fehler, zumindest keine fehlschlagenden Commands. Wir sind auf das gleiche Problem gestossen, siehe
http://bugreports.qt.nokia.com/browse/QTBUG-7096 Da die Erweiterung des Qt-Undo-Frameworks ein Murks wäre oder massive Auswirkungen auf bestehenden Code hätte, vermute ich, dass "wir" uns selber helfen müssen. Jedenfalls haben wir uns ein kleines Framework geschrieben, dass mehr oder weniger die gleiche Funktionalität wie Qt's Undo-Framework hat, aber fehlschlagende Operationen unterstützt. Melde Dich, wenn Du Interesse daran hättest.
Viele Grüsse
Reto
Verfasst: 26. August 2010 13:58
von mikemc
Halo Reto!
Danke für dein Angebot. Ich habe inzwischen das Qt-Undo-Framework
erweitert (push wird nicht sofort ausgeführt), allerdings nicht komplett neugeschrieben.
lg Michi