Класс QUndoGroup
Класс QUndoGroup представляет собой группу объектов QUndoStack. Подробнее...
| Заголовок: | #include <QUndoGroup> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) 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 настроена на просмотр группы с помощью QUndoView::setGroup(), она обновится, чтобы отобразить активный стек.
Документация по функциям членов
QUndoGroup::QUndoGroup(QObject *parent = nullptr)
Создает пустой объект QUndoGroup с родителем parent.
См. также addStack().
void QUndoGroup::activeStackChanged(QUndoStack *stack)
Этот сигнал излучается всякий раз, когда активный стек группы меняется. Это может произойти при вызове setActiveStack() или QUndoStack::setActive(), или когда активный стек удален из группы. stack — это новый активный стек. Если активного стека нет, stack равен 0.
См. также setActiveStack() и QUndoStack::setActive().
void QUndoGroup::canRedoChanged(bool canRedo)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::canRedoChanged() или активный стек меняется.
canRedo — это новое состояние или ложь, если активный стек равен 0.
См. также QUndoStack::canRedoChanged() и setActiveStack().
void QUndoGroup::canUndoChanged(bool canUndo)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::canUndoChanged() или активный стек меняется.
canUndo — это новое состояние или ложь, если активный стек равен 0.
См. также QUndoStack::canUndoChanged() и setActiveStack().
void QUndoGroup::cleanChanged(bool clean)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::cleanChanged() или активный стек меняется.
clean — это новое состояние или истина, если активный стек равен 0.
См. также QUndoStack::cleanChanged() и setActiveStack().
void QUndoGroup::indexChanged(int idx)
Этот сигнал излучается всякий раз, когда активный стек излучает QUndoStack::indexChanged() или активный стек меняется.
idx — это новый текущий индекс или 0, если активный стек равен 0.
См. также QUndoStack::indexChanged() и setActiveStack().
void QUndoGroup::redo()
Вызывает QUndoStack::redo() на активном стеке.
Если ни один из стеков не активен или если группа пуста, эта функция ничего не делает.
См. также undo(), canRedo() и setActiveStack().
[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-6.0/qundogroup.html