首页 > 代码库 > qt关键字高亮
qt关键字高亮
qt的高亮显示主要是使用qsyntaxhighlighter类,由于qsyntaxhighlighter是抽象基类,所以需要继承并自己实现
//头文件
#ifndef MARKDOWN_HIGHLIGHTER_H
#define MARKDOWN_HIGHLIGHTER_H
#include <QSyntaxHighlighter>
#include <qtextedit.h>
#include <qtextdocument.h>
#include <QTextCharFormat>
#include <qtextcursor.h>
#include <qhash.h>
#include <qvector.h>
#include <qregexp.h>
#include <qcolor.h>
#include <qstring.h>
class markdown_highlighter : public QSyntaxHighlighter
{
public:
markdown_highlighter(QTextEdit *parent = 0);
void highlightBlock(const QString &text);
void SetColorText(const QString &str, const QColor &color);
void clearRules();
private:
struct HighlightingRule
{
QRegExp pattern;
QTextCharFormat format;
};
QVector<HighlightingRule> highlightingRules;
};
#endif // MARKDOWN_HIGHLIGHTER_H
//cpp文件
#include "markdown_highlighter.h"
markdown_highlighter::markdown_highlighter(QTextEdit *parent)
: QSyntaxHighlighter(parent)
{
highlightingRules.clear();
}
void markdown_highlighter::highlightBlock(const QString &text)
{
foreach (HighlightingRule rule, highlightingRules)
{
QRegExp expression(rule.pattern);
int index = text.indexOf(expression);
while (index >= 0)
{
int length = expression.matchedLength();
setFormat(index, length, rule.format);
index = text.indexOf(expression, index + length);
}
}
}
void markdown_highlighter::SetColorText(const QString &str, const QColor &color)
{
HighlightingRule rule;
rule.pattern = QRegExp(str);
QTextCharFormat format;
format.setForeground(color);
rule.format = format;
highlightingRules.append(rule);
}
void markdown_highlighter::clearRules()
{
highlightingRules.clear();
}
然后在你需要高亮的地方即可
md_high = new markdown_highlighter(ui->textEdit);
md_high->SetColorText("##",Qt::green);
qt关键字高亮
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。