使用 QScintilla 和 Qt/C++ 自定义语法高亮
Posted
技术标签:
【中文标题】使用 QScintilla 和 Qt/C++ 自定义语法高亮【英文标题】:Custom syntax highlighting using QScintilla with Qt/C++ 【发布时间】:2021-09-27 21:46:46 【问题描述】:我正在尝试使用 QScintilla 在 Qt (C++) 中实现 custom 语法突出显示,但是文档有点差。我搜索了一下,只找到了 PyQt 的教程(qscintilla.com)。我使用的是 C++ 而不是 Python。
那么我可以从哪里开始呢?我注意到有一个类 QSciLexCustom
但它看起来对我来说真的很混乱。
实际上,我的自定义语法与 C++ 非常相似,不同之处之一是在变量前使用
$
。
【问题讨论】:
【参考方案1】:您可以继承QsciLexerCustom
并实现styleText()
函数:
class MyCustomLexer: public QsciLexerCustom
public:
MyCustomLexer(QsciScintilla *parent);
void styleText(int start, int end);
QString description(int style) const;
const char *language() const;
QsciScintilla *parent_;
;
MyCustomLexer::MyCustomLexer(QsciScintilla *parent)
setColor(QColor("#000000"), 1);
setFont(QFont("Consolas", 18), 1);
void MyCustomLexer::styleText(int start, int end)
QString lexerText = parent_->text(start, end);
...
startStyling(...);
setStyling(..., 1); // set to style 1
QString MyCustomLexer::description(int style) const
switch (style)
case 0:
return tr("Default");
...
const char *MyCustomLexer::language() const
return "MyCustomLexer";
【讨论】:
哦,非常感谢!这是一个很好的开始。看来这之后需要参考Scintilla
的详细文档了。以上是关于使用 QScintilla 和 Qt/C++ 自定义语法高亮的主要内容,如果未能解决你的问题,请参考以下文章