【Qt】实现文本整词高亮

简介: QTextEdit 中显示富文本,整词匹配并高亮

1. 问题背景

为了匹配到关键字并实现语法高亮,但匹配关键字时,可能会匹配到非预期的单词,如匹配 int 关键字, 可能会匹配到其他单词如 point, interface 等等。

为了避免这种情况,能想到使用关键字前后加空格的办法来解决,但此种方式有缺陷,如代码中会出现 vector<int> 时,这种情况前后无空格,经过尝试,建议使用正则表达式类QRegularExpression

2. QRegEx 和 QRegularExpression 区别

Qt 4 引入 QRegEx
Qt 5.0 引入 QRegularExpression,相较 QRegEx 修复了一些缺陷,且更高效。所以建议使用 QRegularExpression

3. 代码实现

整词匹配需要使用 \b,正则表达式中 \b 用于匹配一个单词的开头或者结尾。

"\bWord\b"

注意:仅写 \b 在 C++ 中不够,由于 \ 字符需要转义 所以应写成:

"\\bWord\\b"

定义需要匹配的关键字

QVector<QString> m_keywords = {
   "int", "double", /*.....*/};

替换并标注高亮

QString output = input;
// ...
for (const QString & str : m_keywords)
{
   
    QRegularExpression regex("\\b" + str + "\\b");
    if (output.contains(regex)
    {
   
        output.replace(regex, "<font color='#569cd6'>" + str + "</font>");
    }
}
目录
相关文章
|
数据安全/隐私保护 Windows
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
711 0
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
|
自然语言处理 数据可视化
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
|
1月前
Qt 按行追加文本代码
Qt 按行追加文本代码
11 0
|
6月前
|
存储 UED
Qt自定义控件之动画文本
Qt自定义控件之动画文本
|
4月前
QT基础教程(文本绘制)
QT基础教程(文本绘制)
46 0
|
4月前
|
C++
[Qt5&控件] Label控件显示文本内容(字符串和整数)
[Qt5&控件] Label控件显示文本内容(字符串和整数)
69 0
[Qt5&控件] Label控件显示文本内容(字符串和整数)
|
6月前
|
移动开发 Linux Windows
linux系统中QT进行文本读写操作的方法
linux系统中QT进行文本读写操作的方法
52 0
|
11月前
|
数据安全/隐私保护
Qt之标签和单行文本编辑框(QLabel、QLineEdit)
Qt之标签和单行文本编辑框(QLabel、QLineEdit)
145 0
Qt-QML-自定义个自己的文本Text
好久都没有正经的更新自己的文章了,这段时间也辞职了,听了小爱的,准备买个碗,自己当老板,下面请欣赏效果图
99 0
Qt-QML-自定义个自己的文本Text
PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。
PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。
918 0
PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。

热门文章

最新文章

推荐镜像

更多