【问题标题】:QLineEdit programatic editing of text undoable in a single stepQLineEdit 对文本的程序化编辑可在一个步骤中撤消
【发布时间】:2021-02-05 12:04:09
【问题描述】:

我引入了一个特定的自定义快捷键,以允许从当前文本光标位置开始删除 QLineEdit 中接下来的 10 个字符。但我想让这个不可撤销。不幸的是 QLineEdit 不提供 QTextDocument 或 QTextCursor 对象,所以我尝试了以下代码:

int pos = lineEdit->cursorPosition();
lineEdit->setSelection(pos, pos + 10);
lineEdit->del();

这很好用,但是当我按下撤消 (Ctrl+Z) 时,删除的文本又回来了(这是我想要的)但它被选中了(这是我不想要的,而是我想返回到我之前的状态以编程方式选择文本)。我希望可以选择将选择和删除包装到一个“宏”撤消步骤中。这可能吗? https://doc.qt.io/qt-5/qtextcursor.html#beginEditBlock 之类的东西?

【问题讨论】:

    标签: qt


    【解决方案1】:

    尝试使用 QPlainTextEdit 和 setWordWrapMode(QTextOption::NoWrap) 来使用 QTextDocument+QTextCursor 功能。

    【讨论】:

    • 我担心这会带来比我解决的问题更多的问题。不可能简单地使用 QCompleter 就是其中之一。
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多