QUndoGroup 类

QUndoGroup 类是一个 QUndoStack 对象的集合。 更多...

头文件 #include <QUndoGroup>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QObject

公共函数

QUndoGroup(QObject *parent = nullptr)
virtual~QUndoGroup()
QUndoStack *activeStack() const
voidaddStack(QUndoStack *stack)
boolcanRedo() const
boolcanUndo() const
QAction *createRedoAction(QObject *parent, const QString &prefix = QString()) const
QAction *createUndoAction(QObject *parent, const QString &prefix = QString()) const
boolisClean() const
QStringredoText() const
voidremoveStack(QUndoStack *stack)
QList<QUndoStack *>stacks() const
QStringundoText() const

公共槽函数

voidredo()
voidsetActiveStack(QUndoStack *stack)
voidundo()

信号

voidactiveStackChanged(QUndoStack *stack)
voidcanRedoChanged(bool canRedo)
voidcanUndoChanged(bool canUndo)
voidcleanChanged(bool clean)
voidindexChanged(int idx)
voidredoTextChanged(const QString &redoText)
voidundoTextChanged(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 以监视组,则通过 QUndoView::setGroup(),它将更新自身以显示活动堆栈。

成员函数文档

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

创建一个具有父对象 parent 的空 QUndoGroup 对象。

另请参阅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)

将堆栈添加到该组。该组不拥有堆栈。另一种将堆栈添加到组的方法是通过指定 QObject 作为堆栈的父类在 QUndoStack::QUndoStack()). 在这种情况下,堆栈将与组一起删除,方法与 QObjects 的常规方法相似。

另请参阅removeStack()、stacks() 和 QUndoStack::QUndoStack()。

bool QUndoGroup::canRedo() const

返回活动堆栈的 QUndoStack::canRedo 的值。

如果没有活动堆栈,或者组为空,此函数返回 false.

另请参阅canUndo() 和 setActiveStack()。

[信号] void QUndoGroup::canRedoChanged(bool canRedo)

只要活动堆栈发出 QUndoStack::canRedoChanged 或活动堆栈改变,就发出此信号。

canRedo 是新状态,如果活动堆栈为 0,则为 false。

另请参阅QUndoStack::canRedoChanged() 和 setActiveStack()。

bool QUndoGroup::canUndo() const

返回活动堆栈的 QUndoStack::canUndo 的值。

如果没有活动堆栈,或者组为空,此函数返回 false.

另请参阅canRedo() 和 setActiveStack()。

[信号] void QUndoGroup::canUndoChanged(bool canUndo)

只要活动堆栈发出 QUndoStack::canUndoChanged 或活动堆栈改变,就发出此信号。

canUndo 是新状态,如果活动堆栈为 0,则为 false。

另请参阅QUndoStack::canUndoChanged() 和 setActiveStack()。

[信号] 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 为空,则将使用默认模板 "重做 %1" 替代前缀。在 Qt 4.8 之前,默认使用了 "重做"。

另请参阅 createUndoAction(),canRedo(),以及 QUndoCommand::text

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

创建一个有父对象的撤销QAction对象。

触发此操作将在活动栈上调用QUndoStack::undo()。这个动作的文本将始终是在undo()的下一个调用中将被撤销的命令的文本,前面加上prefix。如果没有可撤销的命令,如果组是空的或者没有栈是活动的,则此操作将禁用。

如果prefix为空,将使用默认模板"撤销%1"而不是前缀。在Qt 4.8之前,默认前缀为"撤销"。

另请参阅 createRedoActioncanUndo,以及 QUndoCommand::text

[信号] void QUndoGroup::indexChanged(int idx)

每当活动栈发出QUndoStack::indexChanged()或者活动栈发生变化时,都会发出此信号。

idx是新的当前索引,或者活动栈为0时为0。

另请参阅 QUndoStack::indexChanged() 和 setActiveStack

bool QUndoGroup::isClean() const

返回活动栈的 QUndoStack::isClean 的值。

如果没有栈是活动的或组为空,此函数返回true

另请参阅 setActiveStack

[槽] void QUndoGroup::redo()

在活动栈上调用QUndoStack::redo()。

如果没有栈是活动的或组为空,此函数不执行任何操作。

另请参阅 undocanRedo,以及 setActiveStack

QString QUndoGroup::redoText() const

返回活动栈的 QUndoStack::redoText 的值。

如果没有栈是活动的或组为空,此函数返回空字符串。

另请参阅 undoTextsetActiveStack

[信号] void QUndoGroup::redoTextChanged(const QString &redoText)

每当活动栈发出QUndoStack::redoTextChanged()或者活动栈发生变化时,都会发出此信号。

redoText是新的状态,或者活动栈为0时为空字符串。

另请参阅 QUndoStack::redoTextChangedsetActiveStack

void QUndoGroup::removeStack(QUndoStack *stack)

从该组中移除stack。如果该栈是组中的活动栈,则活动栈变为0。

另请参阅 addStack(),stacks()和QUndoStack::~QUndoStack

[slot] void QUndoGroup::setActiveStack(QUndoStack *stack)

将此组的活动栈设置为stack

如果栈不是此组的成员,此函数不执行任何操作。

与在stack上调用QUndoStack::setActive()相同。

createUndoAction()和createRedoAction()返回的操作将像stackQUndoStack::createUndoAction()和QUndoStack::createRedoAction()返回的操作那样执行。

另请参阅 QUndoStack::setActive() 和 activeStack

QList<QUndoStack *> QUndoGroup::stacks() const

返回此组中栈的列表。

另请参阅 addStack()和removeStack

[slot] void QUndoGroup::undo()

在活动栈上调用QUndoStack::undo

如果没有栈是活动的或组为空,此函数不执行任何操作。

另请参阅 redocanUndosetActiveStack

QString QUndoGroup::undoText() const

返回活动栈的QUndoStack::undoText的值。

如果没有栈是活动的或组为空,此函数返回空字符串。

另请参阅 redoTextsetActiveStack

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

每当活动栈触发QUndoStack::undoTextChanged或活动栈更改时,该信号被发出。

undoText是新状态,或者当活动栈为0时为空字符串。

另请参阅 QUndoStack::undoTextChangedsetActiveStack

© 2024 The Qt Company Ltd. 本文档中的文档贡献归各自的拥有者所有。提供的文档是根据自由软件基金会发布的GNU自由文档许可第1.3版条款许可的。Qt及其各自商标是芬兰和/或世界其他地区的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。