c++ - 在 QTextEdit 中启用/禁用语法突出显示

标签 c++ qt

所以,我正在用 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/

相关文章:

qt - 从 QML 中的坐标获取纬度和经度

c++ - C++中单链表的操作(带int和char变量)

c++ - 将指向结构的指针转换为数组指针是否有效

c++ - 如何释放 boost::mpi::request?

c++ - QAbstractItemModel data() 永远不会被调用

c++ - 如何在扩展 QTreeWidgetItem 而不是 QTreeWidget 上调用 SLOT?

c++ - QSpinBox 输入 NaN 作为有效值

c++ - 从文件输入 CGAL 类

c++ - 使变量在程序终止后仍然存在

qt - 如何使用 QString::arg() 生成大写十六进制数字? [QT]