【发布时间】:2014-06-05 17:11:04
【问题描述】:
当发出textEdited() 信号时,可能是因为用户键入/粘贴/删除/替换了某些文本,也可能是撤消操作(用户按了 Ctrl+Z,或从上下文菜单)。
我需要以某种方式区分它们。有没有办法在执行撤消操作时得到通知 - 订阅信号,也许捕获事件?我自己在 QLineEdit 文档中找不到任何内容,但我可能错过了。
或者有没有办法简单地检查是否已执行撤消 - 可能是一个标志,或者有没有办法检查撤消堆栈的大小?这样我可以比较它以前的大小,如果它减小了,那么我就知道它是一个 Undo。
如果你想知道我为什么需要这个,我正在尝试实现Editable multi-color QLineEdit,我需要这个以便在撤消操作时恢复以前的颜色。
【问题讨论】:
-
为什么不使用 QTextEdit?我认为“撤消”与文本编辑是相同的法律行为。
-
因为我需要一个 QLineEdit 来实现我的目的。如果我需要一个多行小部件,我会使用 QTextEdit。但是,“相同的法律行动”是什么意思?
-
法律 == QLineEdit 在文本编辑方式之间没有区别:用户取消输入、编程方式、撤消/重做等。