在 QTextEdit 中启用/禁用语法突出显示

raz*_*aze 5 c++ qt

因此,我正在用 C++ 和 Qt 编写一个简单的代码编辑器。我已经使用 QSyntaxHighlighter 类成功创建了一些语法突出显示 (SH) 规则。现在,我想启用和禁用此功能。要在 QTextEdit 上启用 SH,我有一个指针:

SyntaxHighlight *highlighter;
highlighter = new SyntaxHighlight(editor->document());
Run Code Online (Sandbox Code Playgroud)

我所要做的就是以某种方式让这个指针指向任何东西。但我尝试让它指向NULL和0却没有任何结果。还创建了一个解构函数,并使用了delete highlighter. 似乎什么都不起作用。有任何想法吗?

请让我知道我是否应该提供更多代码。

ale*_*sdm 5

您应该使用以下命令,而不是尝试删除荧光笔:

highlighter->setDocument(0);
Run Code Online (Sandbox Code Playgroud)

编辑:删除荧光笔也可以,因此您可能无意中QSyntaxHighlighter在文档上设置了另一个荧光笔,或者您没有禁用或删除正确的荧光笔。

因为语法荧光笔将自身安装为文档的子项,所以您可以使用 / 检索它/findChild它们findChildren

highlighter->setDocument(0);
Run Code Online (Sandbox Code Playgroud)