在QTextEdit中启用/禁用语法高亮显示

时间:2012-05-03 16:20:31

标签: c++ qt

所以,我正在用C ++和Qt编写一个简单的代码编辑器。我已经设法通过使用QSyntaxHighlighter类创建一些语法高亮(SH)规则。 现在,我想启用和禁用此功能。要在QTextEdit上启用SH,我有一个指针:

SyntaxHighlight *highlighter;
highlighter = new SyntaxHighlight(editor->document());

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

如果我应该提供更多代码,请告诉我。

1 个答案:

答案 0 :(得分:3)

您应该使用:

,而不是尝试删除荧光笔
highlighter->setDocument(0);

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

由于语法高亮显示器将自身安装为文档的子级,因此您可以使用findChild / findChildren检索它/它们:

foreach(QSyntaxHighlighter* highlighter,
        ui->textEdit->findChildren<QSyntaxHighlighter*>()) {
    delete highlighter;
}