Auf dieser Seite

QUndoStack Class

Die Klasse „QUndoStack“ ist ein Stapel von „ QUndoCommand “-Objekten. Mehr...

Header: #include <QUndoStack>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Erbt von: QObject

Eigenschaften

Öffentliche Funktionen

QUndoStack(QObject *parent = nullptr)
virtual ~QUndoStack()
void beginMacro(const QString &text)
bool canRedo() const
bool canUndo() const
int cleanIndex() const
void clear()
const QUndoCommand *command(int index) const
int count() const
QAction *createRedoAction(QObject *parent, const QString &prefix = QString()) const
QAction *createUndoAction(QObject *parent, const QString &prefix = QString()) const
void endMacro()
int index() const
bool isActive() const
bool isClean() const
void push(QUndoCommand *cmd)
QString redoText() const
void setUndoLimit(int limit)
QString text(int idx) const
int undoLimit() const
QString undoText() const

Öffentliche Slots

void redo()
void resetClean()
void setActive(bool active = true)
void setClean()
void setIndex(int idx)
void undo()

Signale

void canRedoChanged(bool canRedo)
void canUndoChanged(bool canUndo)
void cleanChanged(bool clean)
void indexChanged(int idx)
void redoTextChanged(const QString &redoText)
void undoTextChanged(const QString &undoText)

Ausführliche Beschreibung

Einen Überblick über das Undo-Framework von Qt finden Sie im Übersichtsdokument.

Ein Undo-Stack verwaltet einen Stapel von Befehlen, die auf ein Dokument angewendet wurden.

Neue Befehle werden mit „ push()“ auf den Stapel gesetzt. Befehle können mit „ undo()“ und „ redo()“ rückgängig gemacht und wiederhergestellt werden oder durch Auslösen der von „ createUndoAction()“ und „ createRedoAction()“ zurückgegebenen Aktionen.

QUndoStack verfolgt den Befehl „ current “. Dies ist der Befehl, der beim nächsten Aufruf von redo() ausgeführt wird. Der Index dieses Befehls wird von index() zurückgegeben. Der Zustand des bearbeiteten Objekts kann mit „ setIndex()“ vor- oder zurückgesetzt werden. Wenn der oberste Befehl auf dem Stapel bereits wiederhergestellt wurde, ist „ index()“ gleich „ count()“.

QUndoStack bietet Unterstützung für Rückgängig- und Wiederherstellungsaktionen, Befehlskomprimierung, Befehlsmakros und unterstützt das Konzept eines „sauberen Zustands“.

Rückgängig- und Wiederherstellungsaktionen

QUndoStack stellt praktische Objekte für die Rückgängig- und Wiederherstellungs QAction en bereit, die in ein Menü oder eine Symbolleiste eingefügt werden können. Wenn Befehle rückgängig gemacht oder wiederhergestellt werden, aktualisiert QUndoStack die Texteigenschaften dieser Aktionen, um widerzuspiegeln, welche Änderung sie auslösen werden. Die Aktionen werden außerdem deaktiviert, wenn kein Befehl zum Rückgängigmachen oder Wiederherstellen verfügbar ist. Diese Aktionen werden von den Funktionen ` QUndoStack::createUndoAction()` und ` QUndoStack::createRedoAction()` zurückgegeben.

Befehlskomprimierung und Makros

Befehlskomprimierung ist nützlich, wenn mehrere Befehle zu einem einzigen Befehl zusammengefasst werden können, der in einem einzigen Vorgang rückgängig gemacht und wiederholt werden kann. Wenn ein Benutzer beispielsweise ein Zeichen in einem Texteditor eingibt, wird ein neuer Befehl erstellt. Dieser Befehl fügt das Zeichen an der Cursorposition in das Dokument ein. Für den Benutzer ist es jedoch praktischer, wenn er die Eingabe ganzer Wörter, Sätze oder Absätze rückgängig machen oder wiederholen kann. Die Befehlskomprimierung ermöglicht es, diese Einzelzeichenbefehle zu einem einzigen Befehl zusammenzufassen, der Textabschnitte einfügt oder löscht. Weitere Informationen finden Sie unter QUndoCommand::mergeWith() und push().

Ein Befehlsmakro ist eine Abfolge von Befehlen, die alle auf einmal rückgängig gemacht oder wiederholt werden. Befehlsmakros werden erstellt, indem einem Befehl eine Liste von untergeordneten Befehlen zugewiesen wird. Das Rückgängigmachen oder Wiederherstellen des übergeordneten Befehls führt dazu, dass die untergeordneten Befehle ebenfalls rückgängig gemacht oder wiederhergestellt werden. Befehlsmakros können explizit erstellt werden, indem im Konstruktor von ` QUndoCommand ` ein übergeordneter Befehl angegeben wird, oder mithilfe der Hilfsfunktionen ` beginMacro()` und ` endMacro()`.

Obwohl Befehlskomprimierung und Makros für den Benutzer denselben Effekt zu haben scheinen, haben sie in einer Anwendung oft unterschiedliche Verwendungszwecke. Befehle, die kleine Änderungen an einem Dokument vornehmen, können sinnvoll komprimiert werden, wenn keine Notwendigkeit besteht, sie einzeln aufzuzeichnen, und wenn für den Benutzer nur größere Änderungen relevant sind. Bei Befehlen, die einzeln aufgezeichnet werden müssen oder die nicht komprimiert werden können, ist es jedoch sinnvoll, Makros zu verwenden, um eine komfortablere Benutzererfahrung zu bieten und gleichzeitig eine Aufzeichnung jedes einzelnen Befehls zu gewährleisten.

Sauberer Zustand

QUndoStack unterstützt das Konzept eines „Clean-Zustands“. Wenn das Dokument auf der Festplatte gespeichert wird, kann der Stapel mit der Funktion ` setClean()` als „clean“ markiert werden. Immer wenn der Stapel durch Rückgängig- und Wiederherstellungsbefehle in diesen Zustand zurückkehrt, sendet er das Signal „ cleanChanged “ () aus. Dieses Signal wird auch ausgesendet, wenn der Stapel den sauberen Zustand verlässt. Dieses Signal wird in der Regel verwendet, um die Speicheraktionen in der Anwendung zu aktivieren und zu deaktivieren sowie den Titel des Dokuments so zu aktualisieren, dass er anzeigt, dass es ungespeicherte Änderungen enthält.

Veraltete Befehle

QUndoStack kann Befehle aus dem Stapel löschen, wenn der Befehl nicht mehr benötigt wird. Ein Beispiel hierfür ist das Löschen eines Befehls, wenn zwei Befehle so zusammengeführt werden, dass der zusammengeführte Befehl keine Funktion mehr hat. Dies lässt sich an Verschiebungsbefehlen beobachten, bei denen der Benutzer die Maus an eine Stelle des Bildschirms bewegt und sie anschließend wieder an die ursprüngliche Position zurückführt. Der zusammengeführte Befehl führt zu einer Mausbewegung von 0. Dieser Befehl kann gelöscht werden, da er keinen Zweck erfüllt. Ein weiteres Beispiel sind Netzwerkbefehle, die aufgrund von Verbindungsproblemen fehlschlagen. In diesem Fall ist der Befehl aus dem Stapel zu entfernen, da die Funktionen „ redo()“ und „ undo()“ aufgrund der Verbindungsprobleme keine Funktion haben.

Ein Befehl kann mit der Funktion ` QUndoCommand::setObsolete()` als veraltet markiert werden. Das Flag ` QUndoCommand::isObsolete()` wird in den Funktionen ` QUndoStack::push()`, ` QUndoStack::undo()`, ` QUndoStack::redo()` und ` QUndoStack::setIndex()` überprüft, nachdem gegebenenfalls die Funktionen ` QUndoCommand::undo()`, ` QUndoCommand::redo()` und ` QUndoCommand:mergeWith()` aufgerufen wurden.

Wenn ein Befehl als veraltet markiert wird und der „clean“-Index größer oder gleich dem aktuellen Befehlsindex ist, wird der „clean“-Index zurückgesetzt, sobald der Befehl aus dem Stapel gelöscht wird.

Siehe auch QUndoCommand und QUndoView.

Dokumentation zu Eigenschaften

active : bool

Diese Eigenschaft gibt den aktiven Status dieses Stacks an.

Eine Anwendung verfügt oft über mehrere Rückgängig-Stapel, einen für jedes geöffnete Dokument. Der aktive Stapel ist derjenige, der dem aktuell aktiven Dokument zugeordnet ist. Wenn der Stapel zu einem „ QUndoGroup “ gehört, werden Aufrufe von „ QUndoGroup::undo()“ oder „ QUndoGroup::redo()“ an diesen Stapel weitergeleitet, sobald er aktiv ist. Wird der „ QUndoGroup “ von einem „ QUndoView “ überwacht, zeigt die Ansicht den Inhalt dieses Stapels an, sobald er aktiv ist. Gehört der Stapel keinem „ QUndoGroup “ an, hat das Aktivieren des Stapels keine Auswirkung.

Es liegt in der Verantwortung des Programmierers, durch den Aufruf von `setActive()` festzulegen, welcher Stapel aktiv ist – in der Regel dann, wenn das zugehörige Dokumentfenster den Fokus erhält.

Zugriffsfunktionen:

bool isActive() const
void setActive(bool active = true)

Siehe auch „ QUndoGroup “.

[read-only] canRedo : bool

Diese Eigenschaft gibt an, ob dieser Stapel rückgängig gemacht werden kann.

Diese Eigenschaft gibt an, ob ein Befehl vorhanden ist, der rückgängig gemacht werden kann.

Zugriffsfunktionen:

bool canRedo() const

Benachrichtigungssignal:

void canRedoChanged(bool canRedo)

Siehe auch „ canRedo()“, „ index()“ und „ canUndo()“.

[read-only] canUndo : bool

Diese Eigenschaft gibt an, ob dieser Stapel rückgängig gemacht werden kann.

Diese Eigenschaft gibt an, ob ein Befehl vorhanden ist, der rückgängig gemacht werden kann.

Zugriffsfunktionen:

bool canUndo() const

Benachrichtigungssignal:

void canUndoChanged(bool canUndo)

Siehe auch „ canUndo()“, „ index()“ und „ canRedo()“.

[read-only] clean : bool

Diese Eigenschaft gibt den Status „sauber“ dieses Stacks an.

Diese Eigenschaft gibt an, ob der Stapel „sauber“ ist oder nicht. Ein Stapel ist beispielsweise „sauber“, wenn ein Dokument gespeichert wurde.

Zugriffsfunktionen:

bool isClean() const

Benachrichtigungssignal:

void cleanChanged(bool clean)

Siehe auch „ isClean()“, „ setClean()“, „ resetClean()“ und „ cleanIndex()“.

[read-only] redoText : QString

Diese Eigenschaft enthält den Redo-Text des nächsten Befehls, der wiederholt wird.

Diese Eigenschaft enthält den Text des Befehls, der beim nächsten Aufruf von ` redo()` wiederhergestellt wird.

Zugriffsfunktionen:

QString redoText() const

Benachrichtigungssignal:

void redoTextChanged(const QString &redoText)

Siehe auch „ redoText()“, „ QUndoCommand::actionText()“ und „ undoText()“.

undoLimit : int

Diese Eigenschaft gibt die maximale Anzahl von Befehlen auf diesem Stapel an.

Wenn die Anzahl der Befehle in einem Stapel das „undoLimit“ des Stapels überschreitet, werden Befehle vom Ende des Stapels gelöscht. Makrobefehle (Befehle mit untergeordneten Befehlen) werden als ein Befehl behandelt. Der Standardwert ist 0, was bedeutet, dass es keine Begrenzung gibt.

Diese Eigenschaft darf nur gesetzt werden, wenn der Rückgängig-Stapel leer ist, da das Setzen bei einem nicht leeren Stapel dazu führen könnte, dass der Befehl am aktuellen Index gelöscht wird. Der Aufruf von `setUndoLimit()` bei einem nicht leeren Stapel gibt eine Warnung aus und hat keine Auswirkungen.

Zugriffsfunktionen:

int undoLimit() const
void setUndoLimit(int limit)

[read-only] undoText : QString

Diese Eigenschaft enthält den Text des nächsten Befehls, der rückgängig gemacht wird.

Diese Eigenschaft enthält den Text des Befehls, der beim nächsten Aufruf von „ undo()“ rückgängig gemacht wird.

Zugriffsfunktionen:

QString undoText() const

Benachrichtigungssignal:

void undoTextChanged(const QString &undoText)

Siehe auch „ undoText()“, „ QUndoCommand::actionText()“ und „ redoText()“.

Dokumentation der Mitgliedsfunktionen

[explicit] QUndoStack::QUndoStack(QObject *parent = nullptr)

Erstellt einen leeren Rückgängig-Stapel mit dem übergeordneten Objekt „ parent “. Der Stapel befindet sich zunächst im „clean“-Zustand. Wenn „ parent “ ein „ QUndoGroup “-Objekt ist, wird der Stapel automatisch der Gruppe hinzugefügt.

Siehe auch ` push()`.

[virtual noexcept] QUndoStack::~QUndoStack()

Löscht den Rückgängig-Stapel und entfernt dabei alle darin enthaltenen Befehle. Befindet sich der Stapel in einer Arbeitsgruppe ( QUndoGroup), wird er automatisch aus der Gruppe entfernt.

Siehe auch „ QUndoStack()“.

void QUndoStack::beginMacro(const QString &text)

Leitet die Erstellung eines Makrobefehls mit der angegebenen Beschreibung unter text ein.

Ein leerer Befehl, der durch die angegebene ` text ` beschrieben wird, wird auf den Stack geschoben. Alle nachfolgenden Befehle, die auf den Stack geschoben werden, werden an die untergeordneten Elemente des leeren Befehls angehängt, bis ` endMacro()` aufgerufen wird.

Aufrufe von `beginMacro()` und ` endMacro()` können verschachtelt werden, jedoch muss jedem Aufruf von `beginMacro()` ein entsprechender Aufruf von ` endMacro()` entsprechen.

Während ein Makro zusammengestellt wird, ist der Stack deaktiviert. Das bedeutet, dass:

  • indexChanged() und cleanChanged() nicht ausgegeben werden,
  • canUndo() und ` canRedo()` geben `false` zurück,
  • der Aufruf von ` undo()` oder ` redo()` keine Wirkung hat,
  • die Rückgängig-/Wiederherstellen-Aktionen sind deaktiviert.

Der Stack wird aktiviert und entsprechende Signale werden ausgegeben, wenn „ endMacro()“ für das äußerste Makro aufgerufen wird.

stack.beginMacro("insert red text");
stack.push(new InsertText(document, idx, text));
stack.push(new SetColor(document, idx, text.length(), Qt::red));
stack.endMacro(); // indexChanged() is emitted

Dieser Code entspricht:

QUndoCommand *insertRed = new QUndoCommand(); // an empty command
insertRed->setText("insert red text");

new InsertText(document, idx, text, insertRed); // becomes child of insertRed
new SetColor(document, idx, text.length(), Qt::red, insertRed);

stack.push(insertRed);

Siehe auch ` endMacro()`.

bool QUndoStack::canRedo() const

Gibt „ true “ zurück, wenn ein Befehl zum Wiederherstellen verfügbar ist; andernfalls gibt die Funktion „ false “ zurück.

Diese Funktion gibt „ false “ zurück, wenn der Stapel leer ist oder wenn der oberste Befehl auf dem Stapel bereits wiederholt wurde.

Synonym mit ` index()` == ` count()`.

Hinweis: Getter -Funktion für die Eigenschaft „canRedo“.

Siehe auch „ index()“ und „ canUndo()“.

[signal] void QUndoStack::canRedoChanged(bool canRedo)

Dieses Signal wird immer dann ausgelöst, wenn sich der Wert von ` canRedo()` ändert. Es dient dazu, die von ` createRedoAction()` zurückgegebene Wiederholungsaktion zu aktivieren oder zu deaktivieren. ` canRedo ` gibt den neuen Wert an.

Hinweis: Notifier -Signal für die Eigenschaft ` canRedo`.

bool QUndoStack::canUndo() const

Gibt „ true “ zurück, wenn ein Befehl zum Rückgängigmachen verfügbar ist; andernfalls wird „ false “ zurückgegeben.

Diese Funktion gibt ` false ` zurück, wenn der Stapel leer ist oder wenn der unterste Befehl auf dem Stapel bereits rückgängig gemacht wurde.

Synonym mit ` index()` == 0.

Hinweis: Getter -Funktion für die Eigenschaft „canUndo“.

Siehe auch „ index()“ und „ canRedo()“.

[signal] void QUndoStack::canUndoChanged(bool canUndo)

Dieses Signal wird immer dann ausgelöst, wenn sich der Wert von ` canUndo()` ändert. Es dient dazu, die von ` createUndoAction()` zurückgegebene Rückgängig-Aktion zu aktivieren oder zu deaktivieren. ` canUndo ` gibt den neuen Wert an.

Hinweis: Notifier -Signal für die Eigenschaft ` canUndo`.

[signal] void QUndoStack::cleanChanged(bool clean)

Dieses Signal wird immer dann ausgegeben, wenn der Stack in den „clean“-Zustand wechselt oder diesen verlässt. Ist clean wahr, befindet sich der Stack im „clean“-Zustand; andernfalls zeigt dieses Signal an, dass er den „clean“-Zustand verlassen hat.

Hinweis: Notifier -Signal für die Eigenschaft ` clean`.

Siehe auch „ isClean()“ und „ setClean()“.

int QUndoStack::cleanIndex() const

Gibt den „clean“-Index zurück. Dies ist der Index, an dem setClean() aufgerufen wurde.

Ein Stapel verfügt möglicherweise nicht über einen sauberen Index. Dies ist der Fall, wenn ein Dokument gespeichert, einige Befehle rückgängig gemacht und anschließend ein neuer Befehl auf den Stapel gelegt wird. Da ` push()` alle rückgängig gemachten Befehle löscht, bevor der neue Befehl auf den Stapel gelegt wird, kann der Stapel nicht mehr in den sauberen Zustand zurückkehren. In diesem Fall gibt diese Funktion -1 zurück. Der Wert -1 kann auch nach einem expliziten Aufruf von ` resetClean()` zurückgegeben werden.

Siehe auch isClean() und setClean().

void QUndoStack::clear()

Löscht den Befehlsstapel, indem alle darin enthaltenen Befehle entfernt werden, und versetzt den Stapel wieder in den ursprünglichen Zustand.

Befehle werden weder rückgängig gemacht noch wiederholt; der Zustand des bearbeiteten Objekts bleibt unverändert.

Diese Funktion wird in der Regel verwendet, wenn der Inhalt des Dokuments verworfen wird.

Siehe auch „ QUndoStack()“.

const QUndoCommand *QUndoStack::command(int index) const

Gibt einen const-Zeiger auf den Befehl unter index zurück.

Diese Funktion gibt einen const-Zeiger zurück, da das Ändern eines Befehls, sobald dieser auf den Stack gelegt und ausgeführt wurde, fast immer zu einer Beschädigung des Dokumentzustands führt, falls der Befehl später rückgängig gemacht oder wiederholt wird.

Siehe auch QUndoCommand::child().

int QUndoStack::count() const

Gibt die Anzahl der Befehle auf dem Stack zurück. Makrobefehle werden als ein Befehl gezählt.

Siehe auch index(), setIndex() und command().

QAction *QUndoStack::createRedoAction(QObject *parent, const QString &prefix = QString()) const

Erstellt ein „Redo“- QAction -Objekt mit dem angegebenen parent.

Das Auslösen dieser Aktion führt zu einem Aufruf von ` redo()`. Der Text dieser Aktion ist der Text des Befehls, der beim nächsten Aufruf von ` redo()` wiederholt wird, vorangestellt durch das angegebene ` prefix`. Wenn kein Befehl zum Wiederholen verfügbar ist, wird diese Aktion deaktiviert.

Ist ` prefix ` leer, wird anstelle des Präfixes die Standardvorlage „Redo %1“ verwendet. Vor Qt 4.8 wurde standardmäßig das Präfix „Redo“ verwendet.

Siehe auch createUndoAction(), canRedo() und QUndoCommand::text().

QAction *QUndoStack::createUndoAction(QObject *parent, const QString &prefix = QString()) const

Erstellt ein „Undo“- QAction -Objekt mit dem angegebenen „ parent “.

Das Auslösen dieser Aktion führt zu einem Aufruf von ` undo()`. Der Text dieser Aktion entspricht dem Text des Befehls, der beim nächsten Aufruf von ` undo()` rückgängig gemacht wird, vorangestellt durch das angegebene ` prefix`. Ist kein Befehl zum Rückgängigmachen verfügbar, wird diese Aktion deaktiviert.

Ist ` prefix ` leer, wird anstelle des Präfixes die Standardvorlage „Undo %1“ verwendet. Vor Qt 4.8 wurde standardmäßig das Präfix „Undo“ verwendet.

Siehe auch createRedoAction(), canUndo() und QUndoCommand::text().

void QUndoStack::endMacro()

Beendet die Zusammensetzung eines Makrobefehls.

Wenn dies das äußerste Makro in einer Reihe verschachtelter Makros ist, gibt diese Funktion einmalig „ indexChanged()“ für den gesamten Makrobefehl aus.

Siehe auch beginMacro().

int QUndoStack::index() const

Gibt den Index des aktuellen Befehls zurück. Dies ist der Befehl, der beim nächsten Aufruf von ` redo()` ausgeführt wird. Es handelt sich dabei nicht immer um den obersten Befehl im Stapel, da möglicherweise bereits mehrere Befehle rückgängig gemacht wurden.

Siehe auch setIndex(), undo(), redo() und count().

[signal] void QUndoStack::indexChanged(int idx)

Dieses Signal wird immer dann ausgelöst, wenn ein Befehl den Zustand des Dokuments verändert. Dies geschieht, wenn ein Befehl rückgängig gemacht oder wiederholt wird. Wenn ein Makrobefehl rückgängig gemacht oder wiederholt wird oder die Funktion ` setIndex()` aufgerufen wird, wird dieses Signal nur einmal ausgelöst.

idx Gibt den Index des aktuellen Befehls an, d. h. des Befehls, der beim nächsten Aufruf von ` redo()` ausgeführt wird.

Siehe auch ` index()` und ` setIndex()`.

bool QUndoStack::isClean() const

Befindet sich der Stack im „clean“-Zustand, wird „ true “ zurückgegeben; andernfalls wird „ false “ zurückgegeben.

Hinweis: Getter -Funktion für die Eigenschaft ` clean`.

Siehe auch „ setClean()“ und „ cleanIndex()“.

void QUndoStack::push(QUndoCommand *cmd)

Fügt „ cmd “ auf den Stapel ein oder führt es mit dem zuletzt ausgeführten Befehl zusammen. In beiden Fällen wird „ cmd “ durch Aufruf der Funktion „ redo()“ ausgeführt.

Wenn die ID von „ cmd “ nicht -1 ist und mit der des zuletzt ausgeführten Befehls übereinstimmt, versucht „ QUndoStack “, die beiden Befehle zusammenzuführen, indem „ QUndoCommand::mergeWith()“ für den zuletzt ausgeführten Befehl aufgerufen wird. Wenn „ QUndoCommand::mergeWith()“ den Wert „ true “ zurückgibt, wird „ cmd “ gelöscht.

Nach dem Aufruf von „ QUndoCommand::redo()“ und gegebenenfalls „ QUndoCommand::mergeWith()“ wird „ QUndoCommand::isObsolete()“ für „ cmd “ oder den zusammengeführten Befehl aufgerufen. Wenn „ QUndoCommand::isObsolete()“ „ true “ zurückgibt, wird „ cmd “ oder der zusammengeführte Befehl vom Stapel entfernt.

In allen anderen Fällen wird „ cmd “ einfach auf den Stapel gelegt.

Wurden Befehle rückgängig gemacht, bevor „ cmd “ auf den Stapel gelegt wurde, werden der aktuelle Befehl und alle darüber liegenden Befehle gelöscht. Daher befindet sich „ cmd “ am Ende immer ganz oben auf dem Stapel.

Sobald ein Befehl auf den Stapel gelegt wurde, übernimmt der Stapel die Verantwortung dafür. Es gibt keine Getter-Methoden, um den Befehl zurückzugeben, da eine Änderung nach seiner Ausführung fast immer zu einer Beschädigung des Dokumentzustands führen würde.

Siehe auch „ QUndoCommand::id()“ und „ QUndoCommand::mergeWith()“.

[slot] void QUndoStack::redo()

Führt den aktuellen Befehl erneut aus, indem „ QUndoCommand::redo()“ aufgerufen wird. Erhöht den aktuellen Befehlsindex.

Ist der Stapel leer oder wurde der oberste Befehl im Stapel bereits wiederholt, führt diese Funktion keine Aktion aus.

Wenn „ QUndoCommand::isObsolete()“ für den aktuellen Befehl den Wert „true“ zurückgibt, wird der Befehl aus dem Stapel gelöscht. Ist der „clean“-Index größer oder gleich dem aktuellen Befehlsindex, wird der „clean“-Index zudem zurückgesetzt.

Siehe auch „ undo()“ und „ index()“.

QString QUndoStack::redoText() const

Gibt den Text des Befehls zurück, der beim nächsten Aufruf von ` redo()` erneut ausgeführt wird.

Hinweis: Getter -Funktion für die Eigenschaft `redoText`.

Siehe auch „ QUndoCommand::actionText()“ und „ undoText()“.

[signal] void QUndoStack::redoTextChanged(const QString &redoText)

Dieses Signal wird immer dann ausgelöst, wenn sich der Wert von ` redoText()` ändert. Es dient dazu, die Texteigenschaft der von ` createRedoAction()` zurückgegebenen „Wiederherstellen“-Aktion zu aktualisieren. ` redoText ` gibt den neuen Text an.

Hinweis: Notifier -Signal für die Eigenschaft ` redoText`.

[slot] void QUndoStack::resetClean()

Verlässt den „clean“-Zustand und gibt „ cleanChanged()“ zurück, wenn der Stack sauber war. Diese Methode setzt den „clean“-Index auf -1 zurück.

Dies wird typischerweise in den folgenden Fällen aufgerufen, wenn ein Dokument:

  • auf der Grundlage einer Vorlage erstellt und noch nicht gespeichert wurde, sodass dem Dokument noch kein Dateiname zugewiesen wurde.
  • aus einer Sicherungsdatei wiederhergestellt wurde.
  • außerhalb des Editors geändert wurde und der Benutzer es nicht neu geladen hat.

Siehe auch ` isClean()`, ` setClean()` und ` cleanIndex()`.

[slot] void QUndoStack::setClean()

Markiert den Stack als bereinigt und gibt „ cleanChanged()“ aus, falls der Stack noch nicht bereinigt war.

Dies wird typischerweise beispielsweise beim Speichern eines Dokuments aufgerufen.

Immer wenn der Stapel durch die Verwendung von Rückgängig-/Wiederherstellen-Befehlen in diesen Zustand zurückkehrt, sendet er das Signal „ cleanChanged()“ aus. Dieses Signal wird auch ausgesendet, wenn der Stapel den sauberen Zustand verlässt.

Siehe auch ` isClean()`, ` resetClean()` und ` cleanIndex()`.

[slot] void QUndoStack::setIndex(int idx)

Ruft wiederholt „ undo “ () oder „ redo “ () auf, bis der aktuelle Befehlsindex den Wert „ idx “ erreicht. Diese Funktion kann verwendet werden, um den Zustand des Dokuments vorwärts oder rückwärts zu verschieben. „ indexChanged “ () wird nur einmal ausgegeben.

Siehe auch index(), count(), undo() und redo().

QString QUndoStack::text(int idx) const

Gibt den Text des Befehls am Index idx zurück.

Siehe auch beginMacro().

[slot] void QUndoStack::undo()

Macht den Befehl unterhalb des aktuellen Befehls rückgängig, indem „ QUndoCommand::undo()“ aufgerufen wird. Verringert den aktuellen Befehlsindex um eins.

Ist der Stapel leer oder wurde der unterste Befehl im Stapel bereits rückgängig gemacht, führt diese Funktion keine Aktion aus.

Wird der Befehl rückgängig gemacht und gibt ` QUndoCommand::isObsolete()` den Wert ` true` zurück, wird der Befehl aus dem Stapel gelöscht. Ist der „Clean“-Index größer oder gleich dem aktuellen Befehlsindex, wird der „Clean“-Index zudem zurückgesetzt.

Siehe auch ` redo()` und ` index()`.

QString QUndoStack::undoText() const

Gibt den Text des Befehls zurück, der beim nächsten Aufruf von ` undo()` rückgängig gemacht wird.

Hinweis: Getter -Funktion für die Eigenschaft „undoText“.

Siehe auch „ QUndoCommand::actionText()“ und „ redoText()“.

[signal] void QUndoStack::undoTextChanged(const QString &undoText)

Dieses Signal wird immer dann ausgelöst, wenn sich der Wert von ` undoText()` ändert. Es dient dazu, die Texteigenschaft der Rückgängig-Aktion zu aktualisieren, die von ` createUndoAction()` zurückgegeben wird. ` undoText ` gibt den neuen Text an.

Hinweis: Notifier -Signal für die Eigenschaft ` undoText`.

© 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.