使用带有 Qt/C++ 的 QScintilla 自定义语法突出显示
Custom syntax highlighting using QScintilla with Qt/C++
我正在尝试使用 QScintilla 在 Qt (C++) 中实现 custom 语法突出显示但是,文档在某种程度上很差。我用谷歌搜索,只找到了 PyQt 教程 (qscintilla.com)。我使用的是 C++ 而不是 Python.
那么我可以从哪里开始呢?我注意到有一个 class QSciLexCustom
但它看起来让我很困惑。
Actually, my custom syntax is quite similar to C++ and one of the different features is using $
before a variable.
您可以继承 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";
}
我正在尝试使用 QScintilla 在 Qt (C++) 中实现 custom 语法突出显示但是,文档在某种程度上很差。我用谷歌搜索,只找到了 PyQt 教程 (qscintilla.com)。我使用的是 C++ 而不是 Python.
那么我可以从哪里开始呢?我注意到有一个 class QSciLexCustom
但它看起来让我很困惑。
Actually, my custom syntax is quite similar to C++ and one of the different features is using
$
before a variable.
您可以继承 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";
}