Undo-Framework: Push canceln, wie?

Alles rund um die Programmierung mit Qt
Antworten
mikemc
Beiträge: 42
Registriert: 11. Februar 2009 15:27

Undo-Framework: Push canceln, wie?

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Überprüf halt erst, ob das Kommando überhaupt möglich ist, bevor du es in den Stack legst...
mikemc
Beiträge: 42
Registriert: 11. Februar 2009 15:27

Beitrag 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.
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Beitrag 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
mikemc
Beiträge: 42
Registriert: 11. Februar 2009 15:27

Beitrag 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
Antworten