文本高亮
文本高亮
自定义类 MySyntaxHighlighter 继承 QSyntaxHighlighter,并重写它的虚函数 highlightBlock(const QString &text)实现自定义高亮
Qt 的 QSyntaxHighlighter 框架会自动调用这个重写的函数。
// 重写 QSyntaxHighlighter 的虚函数 highlightBlock
// Qt 会在需要高亮每一行文本时自动调用这个函数
void MySyntaxHighlighter::highlightBlock(const QString &text)
{
// 定义高亮格式(字体、粗细、颜色等)
QTextCharFormat myFormat;
myFormat.setFont(QFont("微软雅黑")); // 设置字体
myFormat.setFontWeight(QFont::Bold); // 设置加粗
myFormat.setForeground(Qt::green); // 设置前景色(文字颜色为绿色)
// 定义要匹配的正则表达式:单词 "char"
// \b 表示单词边界,确保只匹配完整的 "char"
QString pattern = "\\bchar\\b";
QRegularExpression express(pattern);
int from = 0; // 搜索起始位置
while (true) {
// 在 text 中从位置 from 开始查找匹配
QRegularExpressionMatch match = express.match(text, from);
if (!match.hasMatch())
break; // 没有匹配到则退出循环
// 获取匹配的起始位置
int index = match.capturedStart(0);
// 获取匹配文本的长度(captured(0) 表示整个匹配到的字符串)
int matchLen = match.captured(0).length();
// ✅ 应用高亮:从 index 开始,长度为 matchLen 的字符设置为 myFormat 样式
setFormat(index, matchLen, myFormat);
// 输出调试信息,方便查看匹配位置和长度
qDebug() << "Highlight at" << index << "length" << matchLen;
// 更新搜索起点,避免死循环
from = index + matchLen;
}
}

浙公网安备 33010602011771号