【问题标题】:QPlainTextEdit - pushing into undo stack manuallyQPlainTextEdit - 手动推入撤消堆栈
【发布时间】:2015-12-12 20:31:47
【问题描述】:

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

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

【问题讨论】:

  • 例如你将粘贴 1000 个字符,你想 1000 撤消这个吗?也许您应该只提供一个快捷方式或按钮来删除最后一个字符或进行一些“智能”删除而不是销毁所有撤消堆栈并根据需要用单个字符填充它。
  • 现在,如果您能告诉我如何在输入的每个空格上推送以撤消堆栈,这将对我有所帮助。然后,我会弄清楚其余的。

标签: c++ qt qplaintextedit


【解决方案1】:

我已经通过覆盖 keyPressEvent() 来完成这项工作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2021-06-04
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多