Класс QUndoGroup
Класс QUndoGroup представляет собой группу объектов QUndoStack. Подробнее...
| Заголовок: | #include <QUndoGroup> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.2 |
| Наследует: | QObject |
Этот класс был представлен в Qt 4.2.
Открытые функции
| 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 настроена на наблюдение за группой с помощью QUndoView::setGroup(), она обновит себя, чтобы отобразить активный стек.
Документация по функциям-членам
QUndoGroup::QUndoGroup(QObject *parent = nullptr)
Создает пустой объект QUndoGroup с родителем parent.
См. также addStack().
[signal] void QUndoGroup::activeStackChanged(QUndoStack *stack)
Этот сигнал излучается всякий раз, когда активный стек группы меняется. Это может произойти, когда вызывается setActiveStack() или QUndoStack::setActive(), или когда активный стек удаляется из группы. stack — это новый активный стек. Если активного стека нет, stack равен 0.
См. также setActiveStack() и QUndoStack::setActive().
[signal] void QUndoGroup::canRedoChanged(bool canRedo)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::canRedoChanged() или когда меняется активный стек.
canRedo — это новое состояние или false, если активный стек равен 0.
См. также QUndoStack::canRedoChanged() и setActiveStack().
[signal] void QUndoGroup::canUndoChanged(bool canUndo)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::canUndoChanged() или когда меняется активный стек.
canUndo — это новое состояние или false, если активный стек равен 0.
См. также QUndoStack::canUndoChanged() и setActiveStack().
[signal] void QUndoGroup::cleanChanged(bool clean)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::cleanChanged() или когда меняется активный стек.
clean — это новое состояние или true, если активный стек равен 0.
См. также QUndoStack::cleanChanged() и setActiveStack().
[signal] void QUndoGroup::indexChanged(int idx)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::indexChanged() или когда меняется активный стек.
idx — это новый текущий индекс или 0, если активный стек равен 0.
См. также QUndoStack::indexChanged() и setActiveStack().
[slot] void QUndoGroup::redo()
Вызывает QUndoStack::redo() на активном стеке.
Если ни один из стеков не активен или если группа пуста, эта функция ничего не делает.
См. также undo(), canRedo() и setActiveStack().
END_OF_DOCUMENT_MARKER
[signal] void QUndoGroup::redoTextChanged(const QString &redoText)
Этот сигнал излучается всякий раз, когда активная стопка излучает QUndoStack::redoTextChanged() или активная стопка меняется.
redoText — новое состояние или пустая строка, если активная стопка равна 0.
См. также QUndoStack::redoTextChanged() и setActiveStack().
[slot] void QUndoGroup::setActiveStack(QUndoStack *stack)
Устанавливает активную стопку этой группы в stack.
Если стопка не является членом этой группы, эта функция ничего не делает.
Эквивалентно вызову QUndoStack::setActive() для stack.
Действия, возвращаемые createUndoAction() и createRedoAction(), теперь ведут себя так же, как те, что возвращает QUndoStack::createUndoAction() и QUndoStack::createRedoAction() для stack.
См. также QUndoStack::setActive() и activeStack().
[slot] void QUndoGroup::undo()
Вызывает QUndoStack::undo() для активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция ничего не делает.
См. также redo(), canUndo() и setActiveStack().
[signal] void QUndoGroup::undoTextChanged(const QString &undoText)
Этот сигнал излучается всякий раз, когда активная стопка излучает QUndoStack::undoTextChanged() или активная стопка меняется.
undoText — новое состояние или пустая строка, если активная стопка равна 0.
См. также QUndoStack::undoTextChanged() и setActiveStack().
[virtual] QUndoGroup::~QUndoGroup()
Уничтожает QUndoGroup.
QUndoStack *QUndoGroup::activeStack() const
Возвращает активную стопку этой группы.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает nullptr.
См. также setActiveStack() и QUndoStack::setActive().
void QUndoGroup::addStack(QUndoStack *stack)
Добавляет stack в эту группу. Группа не принимает владения стопкой. Другой способ добавить стопку в группу — указать группу в качестве родительского QObject стопки в QUndoStack::QUndoStack(). В этом случае стопка удаляется при удалении группы обычным для QObject способом.
См. также removeStack(), stacks() и QUndoStack::QUndoStack().
bool QUndoGroup::canRedo() const
Возвращает значение QUndoStack::canRedo() активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает false.
См. также canUndo() и setActiveStack().
bool QUndoGroup::canUndo() const
Возвращает значение QUndoStack::canUndo() активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает false.
См. также canRedo() и setActiveStack().
QAction *QUndoGroup::createRedoAction(QObject *parent, const QString &prefix = QString()) const
Создаёт объект QAction для отмены с родителем parent.
Вызов этого действия вызовет QUndoStack::redo() для активной стопки. Текст этого действия всегда будет текстом команды, которая будет отменена в следующем вызове redo(), с префиксом prefix. Если нет команды для отмены, если группа пуста или ни одна из стопок не активна, это действие будет отключено.
Если prefix пусто, используется шаблон по умолчанию «Отменить %1» вместо префикса. До Qt 4.8 по умолчанию использовался префикс «Отменить».
См. также createUndoAction(), canRedo() и QUndoCommand::text().
QAction *QUndoGroup::createUndoAction(QObject *parent, const QString &prefix = QString()) const
Создаёт объект QAction для возврата к предыдущему состоянию с родителем parent.
Вызов этого действия вызовет QUndoStack::undo() для активной стопки. Текст этого действия всегда будет текстом команды, которая будет отменена в следующем вызове undo(), с префиксом prefix. Если нет команды для отмены, если группа пуста или ни одна из стопок не активна, это действие будет отключено.
Если prefix пусто, используется шаблон по умолчанию «Вернуть %1» вместо префикса. До Qt 4.8 по умолчанию использовался префикс «Вернуть».
См. также createRedoAction(), canUndo() и QUndoCommand::text().
bool QUndoGroup::isClean() const
Возвращает значение QUndoStack::isClean() активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает true.
См. также setActiveStack().
QString QUndoGroup::redoText() const
Возвращает значение QUndoStack::redoText() активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает пустую строку.
См. также undoText() и setActiveStack().
void QUndoGroup::removeStack(QUndoStack *stack)
Удаляет stack из этой группы. Если стопка была активной, активной стопкой становится 0.
См. также addStack(), stacks() и QUndoStack::~QUndoStack().
QList<QUndoStack *> QUndoGroup::stacks() const
Возвращает список стопок в этой группе.
См. также addStack() и removeStack().
QString QUndoGroup::undoText() const
Возвращает значение QUndoStack::undoText() активной стопки.
Если ни одна из стопок не активна или если группа пуста, эта функция возвращает пустую строку.
См. также redoText() и setActiveStack().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qundogroup.html