我正在尝试使用QScintilla在 Qt ( C++ ) 中实现自定义语法突出显示,但是,文档在某种程度上很差。我用谷歌搜索,只找到了 PyQt 的教程(qscintilla.com)。我使用的是C++而不是 Python。
那么我可以从哪里开始呢?我注意到有一个类QSciLexCustom
,但它看起来对我来说真的很混乱。
实际上,我的自定义语法与 C++ 非常相似,其中一个不同的功能是
$
在变量之前使用。
我正在尝试使用QScintilla在 Qt ( C++ ) 中实现自定义语法突出显示,但是,文档在某种程度上很差。我用谷歌搜索,只找到了 PyQt 的教程(qscintilla.com)。我使用的是C++而不是 Python。
那么我可以从哪里开始呢?我注意到有一个类QSciLexCustom
,但它看起来对我来说真的很混乱。
实际上,我的自定义语法与 C++ 非常相似,其中一个不同的功能是
$
在变量之前使用。
您可以子类化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";
}