gpt4 book ai didi

c++ - Qt5:告诉 QPlainTextEdit 忽略语法高亮更改

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:18 25 4
gpt4 key购买 nike

我的应用程序中有一个 QPlainTextEdit 小部件,它分配了一个 QSyntaxHighlighter。在该文本编辑区域内的每个内容更改后,我需要收到通知(以更新全局应用程序保存/更改状态)。但是,每次荧光笔开始工作时,信号 textChanged() 也会发出,我需要以某种方式过滤掉它。

我已经看过 modificationChanged() ,但这似乎也不起作用。它忽略突出显示的更改,并在第一次内容更改时成功通知我,但不会通知任何后续更改。 documentation提到,我应该能够使用 setModified(false) 重置内部状态,但该方法似乎不存在。

关于如何过滤更改的任何想法?

我是否必须切换到 QTextDocument,它似乎只有一个 contentsChanged()is said忽略语法高亮更改?

最佳答案

事实证明我已经在正确的轨道上......只是不是一路走来:

我确实需要监听 modificationChanged 信号,因为它们是在内容更改时发出的(这是我的应用程序保存状态处理的相关事件)。

然而,我最初没有看到重置内部修改状态的方法(例如,当我的应用程序保存其状态时)。原因是 QPlainTextEdit 不存在 setModified(bool),但我意识到每个对象在内部都有一个 QTextDocument < em>确实有那个方法。所以每次我需要将状态重置为未修改时,我都简单地调用它:

m_pPlainTextEdit->document()->setModified(false);

因此,当内容下次更改时,modificationChanged 将再次发出,以便我可以对其使用react,例如启用“保存”图标。

顺便说一句: QTextDocument 中的信号 contentsChanged 也会在格式更改时发出,因此对我的场景没有帮助。

关于c++ - Qt5:告诉 QPlainTextEdit 忽略语法高亮更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22685463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com