2014-10-04 70 views
0

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

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

+0

例如,你会糊1000个字符,并且你想在1000撤消此?也许你应该只提供一个快捷方式或按钮来删除最后一个字符,或者做一些“聪明的”删除操作,而不是销毁所有的撤消堆栈,并按照你的意愿填写单个字符。 – Chernobyl 2014-10-04 10:52:54

+0

现在,如果您可以告诉我如何推动在每个键入的空间上撤消堆栈,它会帮助我。然后,我会找出其余的。 – LogicStuff 2014-10-04 11:58:05

回答

0

我已经通过重写keyPressEvent()得到这个工作:

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