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