效果如下:

如何对QTextEditor中的内容进行高亮和格式化显示:
- 首先我们要自定义一个类WenshiduHighlighter,继承自QSyntaxHighlighter
- 实现构造函数,在构造函数中将需要匹配的正则和对应的格式创建,存到成员变量中
- 重写父类的void highlightBlock(const QString &text) = 0函数,在该函数中对text利用之前创建的正则进行匹配,若匹配上了,则调用父类的setFormat方法将对应的格式设置进去
代码如下:
//自定义一个高亮类,需要继承自抽象类QSyntaxHighlighter
class WenshiduHighlighter:public QSyntaxHighlighter
{
Q_OBJECT
public:
//定义高亮规则结构体
struct HighlightRule
{
//需要匹配的正则(通过正则来找到你要想高亮的那一部分字符)
QRegularExpression pattern;
//正则匹配到的字符串对应的格式
QTextCharFormat format;
};
//实现构造函数,参数就是QTextEditor里面的内容,QTextDocument;
//该参数主要是为了用来初始化父类QSyntaxHighlighter
WenshiduHighlighter(QTextDocument* doc):QSyntaxHighlighter(doc)
{
//在构造函数中,初始化highlight_rules,创建想要高亮的内容和对应的格式
HighlightRule rule;
//下面就属于正则表达式的内容了 ,正则怎么写不赘述
//日期,在一对[]内
rule.pattern=QRegularExpression(R"(\[.*\])");
QTextCharFormat datetime_format;
datetime_format.setForeground(QColor(85,85,85));//设置前景色
datetime_format.setBackground(QColor(240,240,240));//设置背景色
datetime_format.setFontWeight(QFont::Bold);//设置加粗
datetime_format.setFontFamily("Consolas");
rule.format=datetime_format;
highlight_rules.push_back(rule);
//温度key
rule.pattern=QRegularExpression(R"(Temperature)");
QTextCharFormat temper_key_format;
temper_key_format.setForeground(QColor(180,30,110));
temper_key_format.setFontFamily("Consolas");
rule.format=temper_key_format;
highlight_rules.push_back(rule

最低0.47元/天 解锁文章
1509

被折叠的 条评论
为什么被折叠?



