在QTextEdit中启用/禁用语法高亮显示 < >我正在C++和Qt中编写一个简单的代码编辑器。我已经通过使用QSyntaxHighlighter类创建了一些语法突出显示(SH)规则。 现在,我想启用和禁用此功能。要在QTextEdit上启用SH,我有一个指针: SyntaxHighlight *highlighter; highlighter = new SyntaxHighlight(editor->document());

在QTextEdit中启用/禁用语法高亮显示 < >我正在C++和Qt中编写一个简单的代码编辑器。我已经通过使用QSyntaxHighlighter类创建了一些语法突出显示(SH)规则。 现在,我想启用和禁用此功能。要在QTextEdit上启用SH,我有一个指针: SyntaxHighlight *highlighter; highlighter = new SyntaxHighlight(editor->document());,c++,qt,C++,Qt,我所要做的就是让这个指针指向任何东西。但我试图让它指向NULL和0,但没有任何结果。Have还创建解构器,并使用delete highlighter。似乎什么都不管用。有什么想法吗 如果我需要提供更多代码,请告诉我。不要试图删除荧光灯,您应该使用: highlighter->setDocument(0); 编辑:删除荧光笔也可以,因此您可能无意中在文档上设置了另一个QSyntaxHighlighter,或者您没有禁用或删除正确的荧光笔 由于语法highlighter将自身安装为文档的子级

我所要做的就是让这个指针指向任何东西。但我试图让它指向NULL和0,但没有任何结果。Have还创建解构器,并使用
delete highlighter
。似乎什么都不管用。有什么想法吗


如果我需要提供更多代码,请告诉我。

不要试图删除荧光灯,您应该使用:

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

由于语法highlighter将自身安装为文档的子级,因此您可以使用
findChild
/
findChildren

foreach(QSyntaxHighlighter*highlighter,
ui->textEdit->findChildren()){
删除荧光笔;
}

Random think-也许在删除SyntaxHighlight后您必须重新绘制QTextEdit小部件?是的,我已经尝试过了。2个问题。1:不起作用:)2:如果我将其重绘为黑色,则在我重绘文本后,它仍将继续为文本着色。仍然不起作用。前面的颜色保持不变,如果我继续在同一文档中编写,SH规则仍然保持不变。