2

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

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

我所要做的就是以某种方式使该指针指向任何内容。但我试图让它指向 NULL 和 0 却没有任何结果。Have 还创建了一个解构器,并使用了delete highlighter. 似乎没有任何效果。有任何想法吗?

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

4

1 回答 1

3

与其尝试删除荧光笔,不如使用:

highlighter->setDocument(0);

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

因为语法高亮器将自己安装为文档的子项,所以您可以使用findChild/检索它/它们findChildren

foreach(QSyntaxHighlighter* highlighter,
        ui->textEdit->findChildren<QSyntaxHighlighter*>()) {
    delete highlighter;
}
于 2012-05-03T23:20:04.817 回答