QPlainTextEdit-手动推入撤消堆栈

QPlainTextEdit - pushing into undo stack manually

本文关键字:撤消 堆栈 QPlainTextEdit-      更新时间:2023-10-16

我正在用QPlainTextEdit构建一个代码编辑器。默认情况下,当我在一行中键入一堆单词,然后按undo时,整行都会被删除。我想手动推动每个角色的撤消堆栈,这样当我单击撤消时,上一个角色就会被删除。然后我可以实现只捕获非字母,等等…这样它就可以一次撤消一个逻辑标记。我该怎么做?

我希望你们能帮我。提前谢谢。

我通过重写keyPressEvent():

void CodeEditor::keyPressEvent(QKeyEvent *event)
{
    QTextCursor cursor = textCursor();
    cursor.beginEditBlock();
    QPlainTextEdit::keyPressEvent(event);
    cursor.endEditBlock();
    setTextCursor(cursor);
}