Qt富文本语法高亮

发布于:2024-06-05 ⋅ 阅读:(135) ⋅ 点赞:(0)

1.添加新文件mysyntaxhighlighter继承QSyntaxHighlighter

#ifndef MYSYNTAXHIGHLIGHTER_H
#define MYSYNTAXHIGHLIGHTER_H

#include<QSyntaxHighlighter>

class MySyntaxhighlighter : public QSyntaxHighlighter
{
    Q_OBJECT //支持源对象系统属性
public:
    MySyntaxhighlighter(QTextDocument* parent = 0);
protected:
    //重写实现该方法
    void highlightBlock(const QString& text);
};

#endif // MYSYNTAXHIGHLIGHTER_H

2.在主头文件进行语法定义 MySyntaxhighlighter *m_sLighter; //语法定义及要包含新定义的头文件

3.在mainwindow.cpp里面添加到工具栏上

 m_sLighter = new MySyntaxhighlighter(ui->textEdit->document());

4. 在高亮cpp里面进行实现

#include "mysyntaxhighlighter.h"

MySyntaxhighlighter::MySyntaxhighlighter(QTextDocument* parent)
    :QSyntaxHighlighter(parent)
{

}

void MySyntaxhighlighter::highlightBlock(const QString &text)
{
    QTextCharFormat format; //字符格式
    format.setFontWeight(QFont::Bold); //加粗
    format.setBackground(Qt::red); //背景颜色
    format.setForeground(Qt::green); //字体颜色

    //语法高亮+进行匹配
    QString pattern = "\\bgood\\b"; //匹配单词边界
    QRegExp expression(pattern);
    int index = text.indexOf(expression);
    while(index >=0){
        int length = expression.matchedLength();//匹配到的字符长度
        setFormat(index,length,format);
        index = text.indexOf(expression,index + length);
    }
}

注意继承的类来自QTextDocument* parent和QSyntaxHighlighter(parent)



网站公告

今日签到

点亮在社区的每一天
去签到