QPlainTextEdit - 手动推入撤消堆栈

时间:2014-10-04 10:25:56

标签: c++ qt qplaintextedit

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

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

1 个答案:

答案 0 :(得分:0)

我通过覆盖keyPressEvent()

来解决这个问题
void CodeEditor::keyPressEvent(QKeyEvent *event)
{
    QTextCursor cursor = textCursor();
    cursor.beginEditBlock();
    QPlainTextEdit::keyPressEvent(event);
    cursor.endEditBlock();
    setTextCursor(cursor);
}