QUndoStack Class
QUndoStack 클래스는 ` QUndoCommand ` 객체들의 스택입니다. 더 보기...
| 헤더: | #include <QUndoStack> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 상속: | QObject |
속성
공개 함수
| QUndoStack(QObject *parent = nullptr) | |
| virtual | ~QUndoStack() |
| void | beginMacro(const QString &text) |
| bool | canRedo() const |
| bool | canUndo() const |
| int | cleanIndex() const |
| void | clear() |
| const QUndoCommand * | command(int index) const |
| int | count() const |
| QAction * | createRedoAction(QObject *parent, const QString &prefix = QString()) const |
| QAction * | createUndoAction(QObject *parent, const QString &prefix = QString()) const |
| void | endMacro() |
| int | index() const |
| bool | isActive() const |
| bool | isClean() const |
| void | push(QUndoCommand *cmd) |
| QString | redoText() const |
| void | setUndoLimit(int limit) |
| QString | text(int idx) const |
| int | undoLimit() const |
| QString | undoText() const |
공개 슬롯
| void | redo() |
| void | resetClean() |
| void | setActive(bool active = true) |
| void | setClean() |
| void | setIndex(int idx) |
| void | undo() |
신호
| 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의 실행 취소 프레임워크에 대한 개요는 개요 문서를 참조하십시오.
Undo 스택은 문서에 적용된 명령들의 스택을 관리합니다.
새로운 명령은 ` push()`를 사용하여 스택에 추가됩니다. 명령은 ` undo()` 및 ` redo()`를 사용하거나, ` createUndoAction()` 및 ` createRedoAction()`가 반환하는 액션을 트리거하여 실행 취소 및 다시 실행할 수 있습니다.
QUndoStack은 current 명령을 추적합니다. 이 명령은 redo()을 다음에 호출할 때 실행될 명령입니다. 이 명령의 인덱스는 index()에 의해 반환됩니다. setIndex()를 사용하여 편집된 객체의 상태를 앞으로 또는 뒤로 되돌릴 수 있습니다. 스택의 최상위 명령이 이미 다시 실행된 경우, index()는 count()와 동일합니다.
QUndoStack은 실행 취소 및 다시 실행 작업, 명령어 압축, 명령어 매크로를 지원하며, 클린 상태 개념을 지원합니다.
실행 취소 및 다시 실행 동작
QUndoStack은 메뉴나 툴바에 삽입할 수 있는 편리한 실행 취소 및 다시 실행 QAction 객체를 제공합니다. 명령을 실행 취소하거나 다시 실행할 때, QUndoStack은 이러한 동작이 어떤 변경을 유발할지 반영하도록 해당 동작의 텍스트 속성을 업데이트합니다. 또한, 실행 취소나 다시 실행할 명령이 없을 경우 해당 동작은 비활성화됩니다. 이러한 동작은 QUndoStack::createUndoAction() 및 QUndoStack::createRedoAction() 함수를 통해 반환됩니다.
명령 압축 및 매크로
명령 압축은 여러 명령을 단일 명령으로 압축하여 한 번의 작업으로 실행 취소 및 다시 실행할 수 있을 때 유용합니다. 예를 들어, 사용자가 텍스트 편집기에서 문자를 입력하면 새로운 명령이 생성됩니다. 이 명령은 커서 위치에 해당 문자를 문서에 삽입합니다. 그러나 사용자로서는 단어, 문장 또는 단락 전체를 입력한 내용을 취소하거나 다시 실행할 수 있는 것이 더 편리합니다. 명령어 압축을 사용하면 이러한 단일 문자 명령어들을 병합하여 텍스트의 일부를 삽입하거나 삭제하는 단일 명령어로 만들 수 있습니다. 자세한 내용은 QUndoCommand::mergeWith() 및 push()을 참조하십시오.
명령 매크로는 일련의 명령으로 구성되며, 이 명령들은 모두 한 번에 취소되거나 다시 실행됩니다. 명령 매크로는 명령에 자식 명령 목록을 지정하여 생성됩니다. 상위 명령을 취소하거나 다시 실행하면 하위 명령들도 취소되거나 다시 실행됩니다. 명령 매크로는 QUndoCommand 생성자에서 상위 명령을 명시적으로 지정하거나, 편의 함수인 beginMacro() 및 endMacro()를 사용하여 생성할 수 있습니다.
명령어 압축과 매크로는 사용자에게는 동일한 효과를 보이는 것처럼 보이지만, 애플리케이션 내에서는 종종 서로 다른 용도로 사용됩니다. 문서에 사소한 변경만 가하는 명령어의 경우, 이를 개별적으로 기록할 필요가 없고 사용자에게는 더 큰 변경 사항만 관련이 있다면 압축하는 것이 유용할 수 있습니다. 반면, 개별적으로 기록해야 하거나 압축할 수 없는 명령의 경우, 각 명령의 기록을 유지하면서 더 편리한 사용자 경험을 제공하기 위해 매크로를 사용하는 것이 유용합니다.
클린 상태
QUndoStack은 ‘클린 상태’ 개념을 지원합니다. 문서가 디스크에 저장될 때, ` setClean()`를 사용하여 스택을 클린 상태로 표시할 수 있습니다. 스택이 실행 취소 및 다시 실행 명령을 통해 이 상태로 돌아올 때마다 cleanChanged() 신호를 발산합니다. 이 신호는 스택이 클린 상태를 벗어날 때도 발산됩니다. 이 신호는 일반적으로 애플리케이션에서 저장 동작을 활성화 및 비활성화하고, 문서에 저장되지 않은 변경 사항이 포함되어 있음을 반영하도록 문서 제목을 업데이트하는 데 사용됩니다.
사용되지 않는 명령
QUndoStack은 더 이상 필요하지 않은 명령을 스택에서 삭제할 수 있습니다. 예를 들어, 두 명령이 병합되어 병합된 명령이 아무런 기능을 하지 않게 된 경우 해당 명령을 삭제할 수 있습니다. 이는 사용자가 마우스를 화면의 한 부분으로 이동시킨 후 원래 위치로 되돌리는 이동 명령에서 볼 수 있습니다. 병합된 명령은 마우스 이동 거리가 0이 됩니다. 이 명령은 아무런 목적이 없으므로 삭제할 수 있습니다. 또 다른 예로는 연결 문제로 인해 실패한 네트워킹 명령이 있습니다. 이 경우, 연결 문제가 있었기 때문에 redo() 및 undo() 함수가 아무런 기능을 수행하지 못하므로 해당 명령을 스택에서 제거해야 합니다.
QUndoCommand::setObsolete() 함수를 사용하여 명령을 더 이상 사용되지 않는 것으로 표시할 수 있습니다. QUndoCommand::isObsolete() 플래그는 QUndoCommand::undo(), QUndoCommand::redo() 및 QUndoCommand:mergeWith()를 호출한 후(해당되는 경우), QUndoStack::push(), QUndoStack::undo(), QUndoStack::redo() 및 QUndoStack::setIndex()에서 확인됩니다.
명령이 더 이상 사용되지 않는 것으로 설정되어 있고, 정리 인덱스가 현재 명령 인덱스보다 크거나 같을 경우, 해당 명령이 스택에서 삭제될 때 정리 인덱스가 재설정됩니다.
QUndoCommand 및 QUndoView도 참조하십시오 .
속성 문서
active : bool
이 속성은 이 스택의 활성 상태를 나타냅니다.
애플리케이션은 종종 열려 있는 문서마다 하나씩, 여러 개의 실행 취소 스택을 가집니다. 활성 스택은 현재 활성 상태인 문서와 연결된 스택입니다. 스택이 실행 취소 뷰( QUndoGroup)에 속해 있는 경우, QUndoGroup::undo() 또는 QUndoGroup::redo() 호출은 해당 스택이 활성 상태일 때 이 스택으로 전달됩니다. QUndoGroup 가 QUndoView 에 의해 감시되고 있는 경우, 해당 스택이 활성 상태일 때 뷰는 이 스택의 내용을 표시합니다. 스택이 QUndoGroup 에 속하지 않는 경우, 이를 활성 상태로 설정해도 아무런 효과가 없습니다.
setActive()를 호출하여 어떤 스택을 활성 상태로 지정할지는 프로그래머의 책임이며, 일반적으로 관련 문서 창이 포커스를 받을 때 이를 수행합니다.
액세스 함수:
| bool | isActive() const |
| void | setActive(bool active = true) |
QUndoGroup도 참조하십시오 .
[read-only] canRedo : bool
이 속성은 이 스택에서 '다시 실행'이 가능한지 여부를 나타냅니다.
이 속성은 되돌릴 수 있는 명령이 있는지 여부를 나타냅니다.
액세스 함수:
| bool | canRedo() const |
알림 신호:
| void | canRedoChanged(bool canRedo) |
canRedo(), index(), canUndo()도 참조하십시오 .
[read-only] canUndo : bool
이 속성은 이 스택에서 실행 취소할 수 있는지 여부를 나타냅니다.
이 속성은 되돌릴 수 있는 명령이 있는지 여부를 나타냅니다.
액세스 함수:
| bool | canUndo() const |
알림 신호:
| void | canUndoChanged(bool canUndo) |
canUndo(), index(), canRedo()도 참조하십시오 .
[read-only] clean : bool
이 속성은 이 스택의 정리 상태를 나타냅니다.
이 속성은 스택이 '클린' 상태인지 여부를 나타냅니다. 예를 들어, 문서가 저장되면 스택은 '클린' 상태가 됩니다.
액세스 함수:
| bool | isClean() const |
알림 신호:
| void | cleanChanged(bool clean) |
isClean(), setClean(), resetClean(), cleanIndex()도 참조하십시오 .
[read-only] redoText : QString
이 속성은 다음에 다시 실행될 명령의 재실행 텍스트를 저장합니다.
이 속성은 ` redo()` 함수가 다음에 호출될 때 재실행될 명령의 텍스트를 저장합니다.
액세스 함수:
| QString | redoText() const |
알림 신호:
| void | redoTextChanged(const QString &redoText) |
redoText(), QUndoCommand::actionText(), undoText()도 참조하십시오 .
undoLimit : int
이 속성은 해당 스택에 저장될 수 있는 명령어의 최대 개수를 지정합니다.
스택에 있는 명령의 수가 스택의 undoLimit을 초과하면, 스택의 맨 아래에 있는 명령부터 삭제됩니다. 매크로 명령(자식 명령을 포함하는 명령)은 하나의 명령으로 간주됩니다. 기본값은 0이며, 이는 제한이 없음을 의미합니다.
이 속성은 실행 취소 스택이 비어 있을 때만 설정할 수 있습니다. 비어 있지 않은 스택에서 이 속성을 설정하면 현재 인덱스에 있는 명령이 삭제될 수 있기 때문입니다. 비어 있지 않은 스택에서 setUndoLimit()를 호출하면 경고 메시지가 출력되고 아무 작업도 수행되지 않습니다.
액세스 함수:
| int | undoLimit() const |
| void | setUndoLimit(int limit) |
[read-only] undoText : QString
이 속성은 다음에 실행 취소될 명령의 실행 취소 텍스트를 저장합니다.
이 속성은 ` undo()` 함수가 다음에 호출될 때 취소될 명령의 텍스트를 저장합니다.
액세스 함수:
| QString | undoText() const |
알림 신호:
| void | undoTextChanged(const QString &undoText) |
undoText(), QUndoCommand::actionText(), redoText()도 참조하십시오 .
멤버 함수 문서
[explicit] QUndoStack::QUndoStack(QObject *parent = nullptr)
parent 를 부모로 하는 빈 실행 취소 스택을 생성합니다. 스택은 처음에 ‘clean’ 상태가 됩니다. parent 가 QUndoGroup 객체인 경우, 스택은 자동으로 해당 그룹에 추가됩니다.
push()도 참조하십시오 .
[virtual noexcept] QUndoStack::~QUndoStack()
실행 취소 스택을 삭제하여 스택에 포함된 모든 명령을 제거합니다. 스택이 ‘ QUndoGroup ’에 속해 있는 경우, 해당 스택은 그룹에서 자동으로 제거됩니다.
QUndoStack()도 참조하십시오 .
void QUndoStack::beginMacro(const QString &text)
지정된 text 설명에 따라 매크로 명령어의 작성을 시작합니다.
지정된 ` text `로 설명되는 빈 명령어가 스택에 밀어넣어집니다. 이후 스택에 밀어넣어지는 모든 명령어는 ` endMacro()`이 호출될 때까지 빈 명령어의 자식 요소로 추가됩니다.
beginMacro()와 endMacro() 호출은 중첩될 수 있지만, beginMacro()를 호출할 때마다 반드시 endMacro() 호출이 대응되어야 합니다.
매크로가 구성되는 동안 스택은 비활성화됩니다. 즉,
- indexChanged() 및 cleanChanged()은 발산되지 않으며,
- canUndo() 및 canRedo()은 false를 반환하며,
- undo() 또는 redo()을 호출해도 아무런 효과가 없으며,
- 실행 취소/다시 실행 기능이 비활성화됩니다.
가장 바깥쪽 매크로에 대해 endMacro()가 호출되면 스택이 활성화되고 적절한 신호가 발생합니다.
stack.beginMacro("insert red text");
stack.push(new InsertText(document, idx, text));
stack.push(new SetColor(document, idx, text.length(), Qt::red));
stack.endMacro(); // indexChanged() is emitted이 코드는 다음 코드와 동일합니다:
QUndoCommand *insertRed = new QUndoCommand(); // an empty command
insertRed->setText("insert red text");
new InsertText(document, idx, text, insertRed); // becomes child of insertRed
new SetColor(document, idx, text.length(), Qt::red, insertRed);
stack.push(insertRed);endMacro()도 참조하십시오 .
bool QUndoStack::canRedo() const
다시 실행할 수 있는 명령이 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.
이 함수는 스택이 비어 있거나 스택의 맨 위 명령이 이미 다시 실행된 경우 false 을 반환합니다.
참고: canRedo 속성에 대한게터 함수입니다.
[signal] void QUndoStack::canRedoChanged(bool canRedo)
이 신호는 canRedo()의 값이 변경될 때마다 발생합니다. 이 신호는 createRedoAction()가 반환하는 재실행 작업을 활성화하거나 비활성화하는 데 사용됩니다. canRedo 는 새로운 값을 지정합니다.
참고: canRedo 속성에 대한알림 신호입니다.
bool QUndoStack::canUndo() const
되돌리기 가능한 명령이 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.
이 함수는 스택이 비어 있거나, 스택의 맨 아래에 있는 명령이 이미 취소된 경우 false 를 반환합니다.
index() == 0과 동의어입니다.
참고: canUndo 속성에 대한게터 함수입니다.
[signal] void QUndoStack::canUndoChanged(bool canUndo)
이 신호는 canUndo()의 값이 변경될 때마다 발생합니다. 이 신호는 createUndoAction()가 반환하는 실행 취소 동작을 활성화하거나 비활성화하는 데 사용됩니다. canUndo 는 새로운 값을 지정합니다.
참고: canUndo 속성에 대한Notifier 신호입니다.
[signal] void QUndoStack::cleanChanged(bool clean)
이 신호는 스택이 클린 상태에 진입하거나 클린 상태를 벗어날 때마다 발생합니다. clean 가 참이면 스택은 클린 상태에 있으며, 그렇지 않으면 이 신호는 스택이 클린 상태를 벗어났음을 나타냅니다.
참고: clean 속성에 대한알림 신호입니다.
isClean() 및 setClean()도 참조하십시오 .
int QUndoStack::cleanIndex() const
클린 인덱스를 반환합니다. 이는 setClean()이 호출된 인덱스입니다.
스택에 클린 인덱스가 없을 수도 있습니다. 이는 문서를 저장한 후, 일부 명령을 취소하고, 새로운 명령을 스택에 밀어 넣었을 때 발생합니다. ` push()`는 새로운 명령을 스택에 밀어 넣기 전에 취소된 모든 명령을 삭제하므로, 스택은 다시 클린 상태로 돌아갈 수 없습니다. 이 경우, 이 함수는 -1을 반환합니다. 또한 resetClean()을 명시적으로 호출한 후에도 -1이 반환될 수 있습니다.
isClean() 및 setClean()도 참조하십시오 .
void QUndoStack::clear()
명령 스택에 있는 모든 명령을 삭제하여 스택을 지우고, 스택을 초기 상태로 되돌립니다.
명령은 취소되거나 다시 실행되지 않으며, 편집된 객체의 상태는 변경되지 않습니다.
이 함수는 일반적으로 문서의 내용이 더 이상 필요하지 않을 때 사용됩니다.
QUndoStack()도 참조하십시오 .
const QUndoCommand *QUndoStack::command(int index) const
index 에 있는 명령에 대한 const 포인터를 반환합니다.
이 함수는 const 포인터를 반환합니다. 명령이 스택에 밀어넣어져 실행된 후, 나중에 해당 명령을 취소하거나 다시 실행할 경우 문서 상태가 손상되는 경우가 거의 대부분이기 때문입니다.
QUndoCommand::child()도 참조하십시오 .
int QUndoStack::count() const
스택에 있는 명령어의 개수를 반환합니다. 매크로 명령어는 하나의 명령어로 계산됩니다.
index(), setIndex(), command()도 참조하십시오 .
QAction *QUndoStack::createRedoAction(QObject *parent, const QString &prefix = QString()) const
지정된 ` parent`를 사용하여 ` QAction ` 재실행 객체를 생성합니다.
이 액션을 트리거하면 redo()가 호출됩니다. 이 액션의 텍스트는 다음 redo() 호출 시 다시 실행될 명령어의 텍스트이며, 지정된 prefix 가 접두사로 붙습니다. 다시 실행할 명령어가 없는 경우, 이 액션은 비활성화됩니다.
prefix 가 비어 있는 경우, 접두사 대신 기본 템플릿 "Redo %1"이 사용됩니다. Qt 4.8 이전 버전에서는 기본적으로 "Redo" 접두사가 사용되었습니다.
createUndoAction(), canRedo() 및 QUndoCommand::text()도 참조하십시오 .
QAction *QUndoStack::createUndoAction(QObject *parent, const QString &prefix = QString()) const
지정된 parent 을 사용하여 되돌리기 QAction 객체를 생성합니다.
이 액션을 실행하면 undo()가 호출됩니다. 이 액션의 텍스트는 다음에 undo()를 호출할 때 취소될 명령어의 텍스트에 지정된 prefix 가 접두사로 붙은 것입니다. 취소할 수 있는 명령어가 없는 경우, 이 액션은 비활성화됩니다.
prefix 가 비어 있으면, 접두사 대신 기본 템플릿 "Undo %1"이 사용됩니다. Qt 4.8 이전 버전에서는 기본적으로 "Undo" 접두사가 사용되었습니다.
createRedoAction(), canUndo() 및 QUndoCommand::text()도 참조하십시오 .
void QUndoStack::endMacro()
매크로 명령어의 구성을 종료합니다.
중첩된 매크로 집합에서 이 매크로가 최상위 매크로인 경우, 이 함수는 전체 매크로 명령에 대해 indexChanged()를 한 번 호출합니다.
beginMacro()도 참조하십시오 .
int QUndoStack::index() const
현재 명령의 인덱스를 반환합니다. 이 명령은 다음에 redo()를 호출할 때 실행될 명령입니다. 여러 명령이 취소되었을 수 있으므로, 이 명령이 항상 스택의 최상위 명령인 것은 아닙니다.
setIndex(), undo(), redo() 및 count()도 참조하십시오 .
[signal] void QUndoStack::indexChanged(int idx)
이 신호는 명령어가 문서의 상태를 변경할 때마다 발생합니다. 이는 명령어를 취소하거나 다시 실행할 때 발생합니다. 매크로 명령어를 취소하거나 다시 실행할 때, 또는 ` setIndex()`가 호출될 때 이 신호는 단 한 번만 발생합니다.
idx 현재 명령어의 인덱스를 지정합니다. 즉, 다음에 redo()를 호출했을 때 실행될 명령어를 의미합니다.
index() 및 setIndex()도 참조하십시오 .
bool QUndoStack::isClean() const
스택이 클린 상태인 경우 ` true`를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.
참고: clean 속성에 대한게터 함수입니다.
setClean() 및 cleanIndex()도 참조하십시오 .
void QUndoStack::push(QUndoCommand *cmd)
cmd 를 스택에 밀어 넣거나 가장 최근에 실행된 명령과 병합합니다. 두 경우 모두 cmd 의 redo() 함수를 호출하여 이를 실행합니다.
cmd 의 id가 -1이 아니고, 해당 id가 가장 최근에 실행된 명령의 id와 동일한 경우, QUndoStack 는 가장 최근에 실행된 명령에 대해 QUndoCommand::mergeWith()를 호출하여 두 명령을 병합하려고 시도합니다. QUndoCommand::mergeWith()가 true 를 반환하면, cmd 는 삭제됩니다.
QUndoCommand::redo() 및 해당되는 경우 QUndoCommand::mergeWith()를 호출한 후, cmd 또는 병합된 명령에 대해 QUndoCommand::isObsolete()가 호출됩니다. QUndoCommand::isObsolete()가 true 를 반환하면, cmd 또는 병합된 명령이 스택에서 제거됩니다.
그 외의 모든 경우에는 cmd 이 단순히 스택에 추가됩니다.
cmd 가 스택에 푸시되기 전에 명령이 취소된 경우, 현재 명령과 그 위의 모든 명령이 삭제됩니다. 따라서 cmd 는 항상 스택의 최상단에 위치하게 됩니다.
명령이 스택에 밀어넣어지면, 스택이 해당 명령에 대한 소유권을 갖게 됩니다. 명령이 실행된 후 이를 수정하면 거의 항상 문서의 상태가 손상되므로, 명령을 반환하는 게터는 없습니다.
QUndoCommand::id() 및 QUndoCommand::mergeWith()도 참조하십시오 .
[slot] void QUndoStack::redo()
QUndoCommand::redo()를 호출하여 현재 명령을 다시 실행합니다. 현재 명령 인덱스를 1 증가시킵니다.
스택이 비어 있거나, 스택의 최상단 명령이 이미 다시 실행된 경우, 이 함수는 아무 작업도 수행하지 않습니다.
QUndoCommand::isObsolete()가 현재 명령에 대해 true를 반환하면, 해당 명령은 스택에서 삭제됩니다. 또한, clean 인덱스가 현재 명령 인덱스보다 크거나 같으면 clean 인덱스가 재설정됩니다.
QString QUndoStack::redoText() const
다음에 ` redo()`를 호출할 때 다시 실행될 명령의 텍스트를 반환합니다.
참고: redoText 속성에 대한게터 함수입니다.
QUndoCommand::actionText() 및 undoText()도 참조하십시오 .
[signal] void QUndoStack::redoTextChanged(const QString &redoText)
이 신호는 redoText()의 값이 변경될 때마다 발생합니다. 이 신호는 createRedoAction()가 반환하는 다시 실행(redo) 동작의 text 속성을 업데이트하는 데 사용됩니다. redoText 는 새로운 텍스트를 지정합니다.
참고: redoText 속성에 대한Notifier 신호입니다.
[slot] void QUndoStack::resetClean()
클린 상태를 종료하고, 스택이 클린 상태였을 경우 ` cleanChanged()`를 발생시킵니다. 이 메서드는 클린 인덱스를 -1로 재설정합니다.
이 메서드는 일반적으로 다음과 같은 경우에 호출됩니다. 즉, 문서가:
- 어떤 템플릿을 기반으로 생성되었으나 아직 저장되지 않아, 문서에 파일 이름이 할당되지 않은 경우.
- 백업 파일에서 복원된 경우.
- 편집기 외부에서 변경되었으나 사용자가 문서를 다시 불러오지 않은 경우.
isClean(), setClean(), cleanIndex()도 참조하십시오 .
[slot] void QUndoStack::setClean()
스택이 아직 깨끗하지 않은 경우, 스택을 깨끗한 상태로 표시하고 ` cleanChanged()`를 호출합니다.
이는 일반적으로 문서를 저장할 때 호출됩니다.
스택이 실행 취소/다시 실행 명령을 통해 이 상태로 돌아올 때마다 cleanChanged() 신호를 발생시킵니다. 이 신호는 스택이 깨끗한 상태를 벗어날 때도 발생합니다.
isClean(), resetClean() 및 cleanIndex()도 참조하십시오 .
[slot] void QUndoStack::setIndex(int idx)
현재 명령어 인덱스가 idx 에 도달할 때까지 undo() 또는 redo()을 반복적으로 호출합니다. 이 함수는 문서의 상태를 앞으로 또는 뒤로 되감는 데 사용할 수 있습니다. indexChanged()은 단 한 번만 발생합니다.
index(), count(), undo(), redo()도 참조하십시오 .
QString QUndoStack::text(int idx) const
idx 인덱스에 있는 명령어의 텍스트를 반환합니다.
beginMacro()도 참조하십시오 .
[slot] void QUndoStack::undo()
QUndoCommand::undo()를 호출하여 현재 명령어 바로 아래에 있는 명령어를 취소합니다. 현재 명령어 인덱스를 1 감소시킵니다.
스택이 비어 있거나, 스택의 맨 아래에 있는 명령이 이미 취소된 경우, 이 함수는 아무 작업도 수행하지 않습니다.
명령이 취소된 후, ` QUndoCommand::isObsolete()`가 ` true`를 반환하면 해당 명령은 스택에서 삭제됩니다. 또한, 정리된 인덱스가 현재 명령 인덱스보다 크거나 같으면 정리된 인덱스가 재설정됩니다.
QString QUndoStack::undoText() const
다음에 ` undo()`를 호출할 때 취소될 명령의 텍스트를 반환합니다.
참고: undoText 속성의게터 함수입니다.
QUndoCommand::actionText() 및 redoText()도 참조하십시오 .
[signal] void QUndoStack::undoTextChanged(const QString &undoText)
이 신호는 undoText()의 값이 변경될 때마다 발생합니다. 이 신호는 createUndoAction()이 반환하는 실행 취소 동작의 text 속성을 업데이트하는 데 사용됩니다. undoText 는 새로운 텍스트를 지정합니다.
참고: undoText 속성에 대한Notifier 신호입니다.
© 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.