Phi*_*ier 6 c++ syntax-highlighting textchanged qplaintextedit qt5
QPlainTextEdit我的应用程序中有一个QSyntaxHighlighter分配给它的小部件。在该文本编辑区域内的每个内容更改时,我需要收到通知(以更新全局应用程序保存/更改状态)。但是,textChanged()每次荧光笔开始工作时也会发出信号,我需要以某种方式过滤掉。
我已经看过了modificationChanged(),但这似乎也不起作用。它忽略突出显示的更改并在第一次内容更改时成功通知我,但不会通知我任何后续更改。该文件提到,我应该能够与复位内部状态setModified(false),但这种方法似乎并不存在。
关于如何过滤更改的任何想法?
我一定要切换到QTextDocument似乎有哪些单contentsChanged()是说忽略语法高亮的变化?
事实证明我已经在正确的轨道上......只是不是一路:
我确实需要收听modificationChanged信号,因为它们是在内容更改时发出的(这是我的应用程序保存状态处理的相关事件)。
然而,我最初没有看到重置内部修改状态的方法(例如,当我的应用程序保存其状态时)。原因是setModified(bool)不存在QPlainTextEdit,但我意识到这些对象中的每一个都有一个QTextDocument内部确实具有该方法。因此,每次我需要将状态重置为未修改时,我都简单地调用它:
m_pPlainTextEdit->document()->setModified(false);
Run Code Online (Sandbox Code Playgroud)
因此,下次更改内容时,modificationChanged将再次发出,以便我可以对其做出反应,例如启用“保存”图标。
顺便说一句:格式更改时也会发出信号contentsChangedfrom QTextDocument,因此在我的场景中没有帮助。