Auf dieser Seite

Überblick über das Undo-Framework von Qt

Einführung

Das „Undo“-Framework von Qt ist eine Implementierung des Befehlsmusters zur Umsetzung von Rückgängig-/Wiederherstellungsfunktionen in Anwendungen.

Das „Command“-Muster basiert auf der Idee, dass alle Bearbeitungen in einer Anwendung durch das Erstellen von Instanzen von Befehlsobjekten erfolgen. Befehlsobjekte wenden Änderungen am Dokument an und werden in einem Befehlsstapel gespeichert. Darüber hinaus weiß jeder Befehl, wie er seine Änderungen rückgängig machen kann, um das Dokument in seinen vorherigen Zustand zurückzusetzen. Solange die Anwendung ausschließlich Befehlsobjekte verwendet, um den Zustand des Dokuments zu ändern, ist es möglich, eine Befehlssequenz rückgängig zu machen, indem man den Stapel abwärts durchläuft und nacheinander für jeden Befehl die „Undo“-Methode aufruft. Ebenso ist es möglich, eine Befehlssequenz wiederherzustellen, indem man den Stapel aufwärts durchläuft und für jeden Befehl die „Redo“-Methode aufruft.

Klassen

Das Framework besteht aus vier Klassen:

  • QUndoCommand ist die Basisklasse aller Befehle, die auf einem Rückgängig-Stapel gespeichert sind. Sie kann eine einzelne Änderung im Dokument anwenden („Wiederherstellen“) oder rückgängig machen.
  • QUndoStack ist eine Liste von „ QUndoCommand “-Objekten. Sie enthält alle am Dokument ausgeführten Befehle und kann den Zustand des Dokuments durch Rückgängigmachen oder Wiederherstellen vor- oder zurückversetzen.
  • QUndoGroup ist eine Gruppe von Rückgängig-Stapeln. Dies ist nützlich, wenn eine Anwendung mehr als einen Rückgängig-Stapel enthält, typischerweise einen für jedes geöffnete Dokument. „ QUndoGroup “ stellt ein einziges Paar von Rückgängig-/Wiederherstellen-Slots für alle Stapel in der Gruppe bereit. Es leitet Rückgängig- und Wiederherstellen-Anfragen an den aktiven Stapel weiter, bei dem es sich um den Stapel handelt, der dem Dokument zugeordnet ist, das gerade vom Benutzer bearbeitet wird.
  • QUndoView ist ein Widget, das den Inhalt eines Rückgängig-Stapels anzeigt. Durch Klicken auf einen Befehl in der Ansicht wird der Zustand des Dokuments zu diesem Befehl zurückgesetzt oder vorwärts gesprungen.

Konzepte

Die folgenden Konzepte werden vom Framework unterstützt:

  • Clean-Zustand: Wird verwendet, um zu signalisieren, wann das Dokument in einen Zustand wechselt, der auf der Festplatte gespeichert wurde, oder diesen verlässt. Dies wird in der Regel verwendet, um die Speicheraktionen zu deaktivieren oder zu aktivieren und die Titelleiste des Dokuments zu aktualisieren.
  • Befehlskomprimierung: Wird verwendet, um Befehlssequenzen zu einem einzigen Befehl zu komprimieren. Beispiel: In einem Texteditor können die Befehle, die einzelne Zeichen in das Dokument einfügen, zu einem einzigen Befehl komprimiert werden, der ganze Textabschnitte einfügt. Diese größeren Änderungen lassen sich für den Benutzer bequemer rückgängig machen und wiederherstellen.
  • Befehlsmakros: Eine Abfolge von Befehlen, die alle in einem Schritt rückgängig gemacht oder wiederholt werden können. Diese vereinfachen die Entwicklung einer Anwendung, da eine Reihe einfacher Befehle zu komplexeren Befehlen zusammengesetzt werden kann. Beispielsweise lässt sich ein Befehl, der eine Gruppe ausgewählter Objekte in einem Dokument verschiebt, durch die Kombination mehrerer Befehle erstellen, von denen jeder ein einzelnes Objekt verschiebt.

QUndoStack bietet praktische Rückgängig- und Wiederherstellungs QAction -Objekte, die in ein Menü oder eine Symbolleiste eingefügt werden können. Die Texteigenschaften dieser Aktionen geben stets wieder, welcher Befehl rückgängig gemacht oder wiederhergestellt wird, wenn sie ausgelöst werden. In ähnlicher Weise bietet „ QUndoGroup “ Rückgängig- und Wiederherstellungsaktionen, die sich stets wie die Rückgängig- und Wiederherstellungsaktionen des aktiven Stacks verhalten.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.