0

我正在尝试使用QScintilla在 Qt ( C++ ) 中实现自定义语法突出显示,但是,文档在某种程度上很差。我用谷歌搜索,只找到了 PyQt 的教程(qscintilla.com)。我使用的是C++而不是 Python。

那么我可以从哪里开始呢?我注意到有一个类QSciLexCustom,但它看起来对我来说真的很混乱。

实际上,我的自定义语法与 C++ 非常相似,其中一个不同的功能是$在变量之前使用。

4

1 回答 1

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";
}  

于 2021-10-16T12:48:29.850 回答