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