QUndoGroup Class
QUndoGroup 类是一组QUndoStack 对象。更多
头文件: | #include <QUndoGroup> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
继承: | QObject |
公共函数
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 |
公共插槽
void | redo() |
void | setActiveStack(QUndoStack *stack) |
void | undo() |
信号
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) |
详细说明
有关 Qt 撤销框架的概述,请参阅概述。
一个应用程序通常有多个撤销堆栈,每个打开的文档都有一个。同时,应用程序通常有一个撤销操作和一个重做操作,用于触发活动文档中的撤销或重做。
QUndoGroup 是一组QUndoStack 对象,其中一个可能处于活动状态。它有一个undo() 和redo() 槽,用于调用活动栈的QUndoStack::undo() 和QUndoStack::redo() 。它还有createUndoAction() 和createRedoAction() 两个函数。这些函数返回的操作与活动栈的QUndoStack::createUndoAction() 和QUndoStack::createRedoAction() 返回的操作相同。
堆栈可以通过addStack() 添加到组中,也可以通过removeStack() 删除。当堆栈以组作为父QObject 时,堆栈会被隐式添加到组中。
程序员有责任通过调用QUndoStack::setActive() 来指定哪个堆栈处于活动状态,通常是在相关文档窗口获得焦点时。使用中的堆栈也可以通过setActiveStack() 设置,并通过activeStack() 返回。
使用addStack() 将堆栈添加到组时,组并不拥有堆栈的所有权。这意味着必须将堆栈与组分开删除。删除堆栈时,堆栈会自动从组中移除。一个栈只能属于一个组。将堆栈添加到另一个组会导致堆栈从上一个组中删除。
QUndoGroup 还可与QUndoView 结合使用。如果使用QUndoView::setGroup() 将QUndoView 设置为监视一个组,它将更新自身以显示活动堆栈。
成员函数文档
[explicit]
QUndoGroup::QUndoGroup(QObject *parent = nullptr)
创建一个空的 QUndoGroup 对象,父对象为parent 。
另请参阅 addStack().
[virtual noexcept]
QUndoGroup::~QUndoGroup()
摧毁QUndoGroup.
QUndoStack *QUndoGroup::activeStack() const
返回该组的活动堆栈。
如果没有堆栈处于活动状态,或者该组为空,则该函数返回nullptr
。
另请参阅 setActiveStack() 和QUndoStack::setActive()。
[signal]
void QUndoGroup::activeStackChanged(QUndoStack *stack)
每当组的活动堆栈发生变化时,就会发出该信号。这可能发生在调用setActiveStack() 或QUndoStack::setActive() 时,也可能发生在活动栈从组中移除时。stack 是新的活动栈。如果没有堆栈处于活动状态,则stack 为 0。
另请参阅 setActiveStack() 和QUndoStack::setActive()。
void QUndoGroup::addStack(QUndoStack *stack)
将stack 添加到该组。该组不拥有栈的所有权。将栈添加到组的另一种方法是在QUndoStack::QUndoStack() 中指定组作为栈的父QObject 。在这种情况下,当组被删除时,堆栈也会按照 QObjects 的常规方式被删除。
另请参见 removeStack()、stacks() 和QUndoStack::QUndoStack()。
bool QUndoGroup::canRedo() const
返回活动栈的QUndoStack::canRedo() 值。
如果没有堆栈处于活动状态,或者组为空,则此函数返回false
。
另请参阅 canUndo() 和setActiveStack()。
[signal]
void QUndoGroup::canRedoChanged(bool canRedo)
每当活动堆栈发出QUndoStack::canRedoChanged() 或活动堆栈发生变化时,就会发出该信号。
canRedo 为新状态,如果活动堆栈为 0 则为 false。
另请参见 QUndoStack::canRedoChanged() 和setActiveStack()。
bool QUndoGroup::canUndo() const
返回活动栈的QUndoStack::canUndo() 值。
如果没有堆栈处于活动状态,或者组为空,则此函数返回false
。
另请参阅 canRedo() 和setActiveStack()。
[signal]
void QUndoGroup::canUndoChanged(bool canUndo)
每当活动堆栈发出QUndoStack::canUndoChanged() 或活动堆栈发生变化时,就会发出该信号。
canUndo 是新状态,如果活动堆栈为 0 则为 false。
另请参见 QUndoStack::canUndoChanged() 和setActiveStack()。
[signal]
void QUndoGroup::cleanChanged(bool clean)
每当活动堆栈发出QUndoStack::cleanChanged() 或活动堆栈发生变化时,就会发出该信号。
clean 为新状态,如果活动堆栈为 0,则为 true。
另请参见 QUndoStack::cleanChanged() 和setActiveStack()。
QAction *QUndoGroup::createRedoAction(QObject *parent, const QString &prefix = QString()) const
创建父parent 的重做QAction 对象。
触发此操作将导致在活动堆栈上调用QUndoStack::redo() 。该操作的文本将始终是下一次调用redo() 时要重做的命令文本,前缀为prefix 。如果没有可重做的命令、组为空或没有堆栈处于活动状态,该操作将被禁用。
如果prefix 为空,则使用默认模板 "Redo %1 "代替前缀。在 Qt 4.8 之前,默认使用前缀 "Redo"。
另请参阅 createUndoAction()、canRedo() 和QUndoCommand::text()。
QAction *QUndoGroup::createUndoAction(QObject *parent, const QString &prefix = QString()) const
创建一个撤销QAction 对象,父对象为parent 。
触发该操作将导致在活动堆栈中调用QUndoStack::undo() 。该操作的文本将始终是下一次调用undo() 时要撤销的命令文本,前缀为prefix 。如果没有可供撤销的命令、组为空或没有堆栈处于活动状态,该操作将被禁用。
如果prefix 为空,则使用默认模板 "Undo %1 "代替前缀。在 Qt 4.8 之前,默认使用前缀 "Undo"。
另请参阅 createRedoAction()、canUndo() 和QUndoCommand::text()。
[signal]
void QUndoGroup::indexChanged(int idx)
每当活动堆栈发出QUndoStack::indexChanged() 或活动堆栈发生变化时,就会发出这个信号。
idx 是新的当前索引,如果活动栈为 0,则为 0。
另请参见 QUndoStack::indexChanged() 和setActiveStack()。
bool QUndoGroup::isClean() const
返回活动栈的QUndoStack::isClean() 值。
如果没有堆栈处于活动状态,或者组为空,该函数将返回true
。
另请参见 setActiveStack()。
[slot]
void QUndoGroup::redo()
在活动堆栈上调用QUndoStack::redo() 。
如果没有堆栈处于活动状态,或者组为空,则该函数不会执行任何操作。
另请参阅 undo()、canRedo() 和setActiveStack()。
QString QUndoGroup::redoText() const
返回活动栈QUndoStack::redoText() 的值。
如果没有堆栈处于活动状态,或者组为空,该函数将返回空字符串。
另请参阅 undoText() 和setActiveStack()。
[signal]
void QUndoGroup::redoTextChanged(const QString &redoText)
每当活动堆栈发出QUndoStack::redoTextChanged() 或活动堆栈发生变化时,就会发出该信号。
redoText 为新状态,如果活动堆栈为 0,则为空字符串。
另请参阅 QUndoStack::redoTextChanged() 和setActiveStack()。
void QUndoGroup::removeStack(QUndoStack *stack)
从该组中删除stack 。如果该堆栈是组中的活动堆栈,则活动堆栈变为 0。
另请参阅 addStack()、stacks() 和QUndoStack::~QUndoStack()。
[slot]
void QUndoGroup::setActiveStack(QUndoStack *stack)
将该组的活动栈设置为stack 。
如果堆栈不是该组的成员,则该函数不会执行任何操作。
与在stack 上调用QUndoStack::setActive() 同义。
createUndoAction() 和createRedoAction() 返回的操作现在与stack 的QUndoStack::createUndoAction() 和QUndoStack::createRedoAction() 返回的操作相同。
另请参阅 QUndoStack::setActive() 和activeStack()。
QList<QUndoStack *> QUndoGroup::stacks() const
返回该组中的堆栈列表。
另请参阅 addStack() 和removeStack()。
[slot]
void QUndoGroup::undo()
在活动堆栈上调用QUndoStack::undo() 。
如果没有堆栈处于活动状态,或者组为空,则该函数不会执行任何操作。
另请参阅 redo()、canUndo() 和setActiveStack()。
QString QUndoGroup::undoText() const
返回活动栈QUndoStack::undoText() 的值。
如果没有堆栈处于活动状态,或者组为空,该函数将返回空字符串。
另请参阅 redoText() 和setActiveStack()。
[signal]
void QUndoGroup::undoTextChanged(const QString &undoText)
每当活动堆栈发出QUndoStack::undoTextChanged() 或活动堆栈发生变化时,就会发出该信号。
undoText 为新状态,如果活动堆栈为 0,则为空字符串。
另请参阅 QUndoStack::undoTextChanged() 和setActiveStack()。
© 2025 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.