QUndoGroup Class
Die Klasse „QUndoGroup“ ist eine Gruppe von „ QUndoStack “-Objekten. Mehr...
| Header: | #include <QUndoGroup> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Erbt von: | QObject |
Öffentliche Funktionen
| QUndoGroup(QObject *parent = nullptr) | |
| virtual | ~QUndoGroup() |
| QUndoStack * | activeStack() const |
| void | addStack(QUndoStack *stack) |
| bool | canRedo() const |
| bool | canUndo() const |
| QAction * | createRedoAction(QObject *parent, const QString &prefix = QString()) const |
| QAction * | createUndoAction(QObject *parent, const QString &prefix = QString()) const |
| bool | isClean() const |
| QString | redoText() const |
| void | removeStack(QUndoStack *stack) |
| QList<QUndoStack *> | stacks() const |
| QString | undoText() const |
Öffentliche Slots
| void | redo() |
| void | setActiveStack(QUndoStack *stack) |
| void | undo() |
Signale
| void | activeStackChanged(QUndoStack *stack) |
| 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 in der Übersicht.
Eine Anwendung verfügt oft über mehrere Rückgängig-Stapel, einen für jedes geöffnete Dokument. Gleichzeitig verfügt eine Anwendung in der Regel über eine Rückgängig-Aktion und eine Wiederherstellen-Aktion, die im aktiven Dokument das Rückgängigmachen bzw. Wiederherstellen auslösen.
`QUndoGroup` ist eine Gruppe von ` QUndoStack `-Objekten, von denen eines aktiv sein kann. Sie verfügt über die Slots ` undo()` und ` redo()`, die für den aktiven Stapel die Methoden ` QUndoStack::undo()` und ` QUndoStack::redo()` aufrufen. Außerdem verfügt sie über die Funktionen ` createUndoAction()` und ` createRedoAction()`. Die von diesen Funktionen zurückgegebenen Aktionen verhalten sich genauso wie die von ` QUndoStack::createUndoAction()` und ` QUndoStack::createRedoAction()` des aktiven Stapels zurückgegebenen Aktionen.
Stapel werden mit ` addStack()` einer Gruppe hinzugefügt und mit ` removeStack()` entfernt. Ein Stapel wird implizit einer Gruppe hinzugefügt, wenn er mit dieser Gruppe als übergeordnetem Element erstellt wird: ` QObject`.
Es liegt in der Verantwortung des Programmierers, durch Aufruf von „ QUndoStack::setActive()“ festzulegen, welcher Stapel aktiv ist – in der Regel dann, wenn das zugehörige Dokumentfenster den Fokus erhält. Der aktive Stapel kann auch mit „ setActiveStack()“ festgelegt werden und wird von „ activeStack()“ zurückgegeben.
Wenn ein Stapel mithilfe von ` addStack()` zu einer Gruppe hinzugefügt wird, übernimmt die Gruppe nicht die Verantwortung für den Stapel. Das bedeutet, dass der Stapel separat von der Gruppe gelöscht werden muss. Wenn ein Stapel gelöscht wird, wird er automatisch aus der Gruppe entfernt. Ein Stapel kann nur zu einer Gruppe gehören. Wird er einer anderen Gruppe hinzugefügt, wird er aus der vorherigen Gruppe entfernt.
Eine `QUndoGroup` ist auch in Verbindung mit ` QUndoView` nützlich. Wenn ein ` QUndoView ` mithilfe von ` QUndoView::setGroup()` so eingestellt ist, dass er eine Gruppe überwacht, aktualisiert er sich selbst, um den aktiven Stack anzuzeigen.
Dokumentation der Mitgliedsfunktionen
[explicit] QUndoGroup::QUndoGroup(QObject *parent = nullptr)
Erstellt ein leeres QUndoGroup-Objekt mit dem übergeordneten Objekt „ parent “.
Siehe auch addStack().
[virtual noexcept] QUndoGroup::~QUndoGroup()
Zerstört die „ QUndoGroup “.
QUndoStack *QUndoGroup::activeStack() const
Gibt den aktiven Stapel dieser Gruppe zurück.
Wenn keiner der Stacks aktiv ist oder die Gruppe leer ist, gibt diese Funktion ` nullptr` zurück.
Siehe auch „ setActiveStack()“ und „ QUndoStack::setActive()“.
[signal] void QUndoGroup::activeStackChanged(QUndoStack *stack)
Dieses Signal wird immer dann ausgelöst, wenn sich der aktive Stack der Gruppe ändert. Dies kann geschehen, wenn setActiveStack() oder QUndoStack::setActive() aufgerufen wird oder wenn der aktive Stack aus der Gruppe entfernt wird. stack ist der neue aktive Stack. Ist kein Stack aktiv, ist stack gleich 0.
Siehe auch setActiveStack() und QUndoStack::setActive().
void QUndoGroup::addStack(QUndoStack *stack)
Fügt stack zu dieser Gruppe hinzu. Die Gruppe übernimmt nicht die Eigentumsrechte an dem Stack. Eine weitere Möglichkeit, einen Stack zu einer Gruppe hinzuzufügen, besteht darin, die Gruppe in QUndoStack::QUndoStack() als übergeordneten „ QObject “ des Stacks anzugeben. In diesem Fall wird der Stack beim Löschen der Gruppe auf die für QObjects übliche Weise gelöscht.
Siehe auch „ removeStack()“, „ stacks()“ und „ QUndoStack::QUndoStack()“.
bool QUndoGroup::canRedo() const
Gibt den Wert von „ QUndoStack::canRedo()“ des aktiven Stacks zurück.
Ist keiner der Stacks aktiv oder ist die Gruppe leer, gibt diese Funktion „ false “ zurück.
Siehe auch „ canUndo()“ und „ setActiveStack()“.
[signal] void QUndoGroup::canRedoChanged(bool canRedo)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::canRedoChanged()“ ausgibt oder sich der aktive Stack ändert.
canRedo ist der neue Zustand oder „false“, wenn der aktive Stack 0 ist.
Siehe auch „ QUndoStack::canRedoChanged()“ und „ setActiveStack()“.
bool QUndoGroup::canUndo() const
Gibt den Wert von „ QUndoStack::canUndo()“ des aktiven Stacks zurück.
Ist keiner der Stacks aktiv oder ist die Gruppe leer, gibt diese Funktion „ false “ zurück.
Siehe auch „ canRedo()“ und „ setActiveStack()“.
[signal] void QUndoGroup::canUndoChanged(bool canUndo)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::canUndoChanged()“ ausgibt oder sich der aktive Stack ändert.
canUndo ist der neue Zustand oder „false“, wenn der aktive Stack 0 ist.
Siehe auch „ QUndoStack::canUndoChanged()“ und „ setActiveStack()“.
[signal] void QUndoGroup::cleanChanged(bool clean)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::cleanChanged()“ ausgibt oder sich der aktive Stack ändert.
clean ist der neue Zustand oder „true“, wenn der aktive Stack 0 ist.
Siehe auch QUndoStack::cleanChanged() und setActiveStack().
QAction *QUndoGroup::createRedoAction(QObject *parent, const QString &prefix = QString()) const
Erstellt ein „Redo“- QAction -Objekt mit dem übergeordneten „ parent “.
Das Auslösen dieser Aktion führt zu einem Aufruf von ` QUndoStack::redo()` auf dem aktiven Stack. Der Text dieser Aktion entspricht immer dem Text des Befehls, der beim nächsten Aufruf von ` redo()` wiederholt wird, vorangestellt mit „ prefix “. Wenn kein Befehl zum Wiederholen verfügbar ist, die Gruppe leer ist oder keiner der Stacks aktiv 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 *QUndoGroup::createUndoAction(QObject *parent, const QString &prefix = QString()) const
Erstellt ein „Undo“- QAction -Objekt mit dem übergeordneten Objekt „ parent “.
Das Auslösen dieser Aktion führt zu einem Aufruf von ` QUndoStack::undo()` auf dem aktiven Stack. Der Text dieser Aktion entspricht immer dem Text des Befehls, der beim nächsten Aufruf von ` undo()` rückgängig gemacht wird, vorangestellt durch ` prefix`. Wenn kein Befehl zum Rückgängigmachen verfügbar ist, wenn die Gruppe leer ist oder wenn keiner der Stacks aktiv ist, 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()“.
[signal] void QUndoGroup::indexChanged(int idx)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::indexChanged()“ ausgibt oder sich der aktive Stack ändert.
idx ist der neue aktuelle Index oder 0, wenn der aktive Stack 0 ist.
Siehe auch „ QUndoStack::indexChanged()“ und „ setActiveStack()“.
bool QUndoGroup::isClean() const
Gibt den Wert von „ QUndoStack::isClean()“ des aktiven Stacks zurück.
Wenn keiner der Stacks aktiv ist oder die Gruppe leer ist, gibt diese Funktion ` true` zurück.
Siehe auch ` setActiveStack()`.
[slot] void QUndoGroup::redo()
Ruft „ QUndoStack::redo()“ für den aktiven Stapel auf.
Wenn keiner der Stacks aktiv ist oder die Gruppe leer ist, führt diese Funktion keine Aktion aus.
Siehe auch „ undo()“, „ canRedo()“ und „ setActiveStack()“.
QString QUndoGroup::redoText() const
Gibt den Wert von „ QUndoStack::redoText()“ des aktiven Stacks zurück.
Ist keiner der Stacks aktiv oder ist die Gruppe leer, gibt diese Funktion eine leere Zeichenkette zurück.
Siehe auch „ undoText()“ und „ setActiveStack()“.
[signal] void QUndoGroup::redoTextChanged(const QString &redoText)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::redoTextChanged()“ ausgibt oder sich der aktive Stack ändert.
redoText ist der neue Zustand oder eine leere Zeichenkette, wenn der aktive Stapel 0 ist.
Siehe auch „ QUndoStack::redoTextChanged()“ und „ setActiveStack()“.
void QUndoGroup::removeStack(QUndoStack *stack)
Entfernt „ stack “ aus dieser Gruppe. War der Stapel der aktive Stapel in der Gruppe, wird der aktive Stapel auf 0 gesetzt.
Siehe auch „ addStack()“, „ stacks()“ und „ QUndoStack::~QUndoStack()“.
[slot] void QUndoGroup::setActiveStack(QUndoStack *stack)
Setzt den aktiven Stapel dieser Gruppe auf „ stack “.
Wenn der Stack nicht zu dieser Gruppe gehört, führt diese Funktion keine Aktion aus.
Ist gleichbedeutend mit dem Aufruf von ` QUndoStack::setActive()` auf ` stack`.
Die von ` createUndoAction()` und ` createRedoAction()` zurückgegebenen Aktionen verhalten sich nun genauso wie die von ` stack`s ` QUndoStack::createUndoAction()` und ` QUndoStack::createRedoAction()` zurückgegebenen Aktionen.
Siehe auch QUndoStack::setActive() und activeStack().
QList<QUndoStack *> QUndoGroup::stacks() const
Gibt eine Liste der Stacks in dieser Gruppe zurück.
Siehe auch „ addStack()“ und „ removeStack()“.
[slot] void QUndoGroup::undo()
Ruft die Funktion „ QUndoStack::undo()“ für den aktiven Stack auf.
Wenn keiner der Stacks aktiv ist oder die Gruppe leer ist, führt diese Funktion keine Aktion aus.
Siehe auch „ redo()“, „ canUndo()“ und „ setActiveStack()“.
QString QUndoGroup::undoText() const
Gibt den Wert von „ QUndoStack::undoText()“ des aktiven Stacks zurück.
Ist keiner der Stacks aktiv oder ist die Gruppe leer, gibt diese Funktion eine leere Zeichenkette zurück.
Siehe auch „ redoText()“ und „ setActiveStack()“.
[signal] void QUndoGroup::undoTextChanged(const QString &undoText)
Dieses Signal wird immer dann ausgelöst, wenn der aktive Stack „ QUndoStack::undoTextChanged()“ ausgibt oder sich der aktive Stack ändert.
undoText ist der neue Zustand oder eine leere Zeichenkette, wenn der aktive Stapel 0 ist.
Siehe auch „ QUndoStack::undoTextChanged()“ und „ setActiveStack()“.
© 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.