检查是否由于QLineEdit中的撤消操作而发出textEdited()信号

时间:2014-06-05 17:11:05

标签: c++ qt undo

当发出textEdited()信号时,可能是因为用户键入/粘贴/删除/替换了某些文本,或者可能是撤消操作(用户按下了Ctrl + Z,或者单击了撤消)从上下文菜单中。)

我需要以某种方式区分它们。有没有办法在执行撤销操作时得到通知 - 订阅信号,也许会捕获一个事件?我自己在QLineEdit文档中找不到任何内容,但我可能错过了它。

或者有没有办法简单地检查是否已执行撤消 - 可能是一个标志,还是有办法检查撤消堆栈的大小是多少?这样我可以将它与之前的大小进行比较,如果它已经减少了,那么我就知道它是一个撤销。

如果你想知道为什么我需要这个,我试图实现Editable multi-color QLineEdit,我需要这个,以便在撤消操作时恢复以前的颜色。

1 个答案:

答案 0 :(得分:0)

QLineEdit专为纯文本编辑而设计。它不是为支持高级格式设计的。您应该使用QTextEdit代替。互联网上有a lot of samples,如何做到这一点。

如果您想练习创建自定义文本编辑器,那么您应该自己实现必要的接口(方法,信号)。