怎么将qt 中 textEdit指定内容标红
时间: 2024-02-12 14:02:45 浏览: 88
你可以使用 QTextEdit 的 QSyntaxHighlighter 类来实现将指定内容标红的功能。具体步骤如下:
1. 创建一个继承自 QSyntaxHighlighter 的子类,并重写 highlightBlock 函数。
2. 在 highlightBlock 函数中,使用正则表达式来匹配需要标红的内容,并调用 setFormat 函数来设置标红的格式,比如设置字体颜色为红色。
3. 在 QTextEdit 中设置文本格式为使用上述自定义的 QSyntaxHighlighter 子类。
下面是一个简单的实现示例:
```python
import re
from PyQt5.QtGui import QTextCharFormat, QColor, QSyntaxHighlighter
class Highlighter(QSyntaxHighlighter):
def __init__(self, parent=None):
super(Highlighter, self).__init__(parent)
self.highlighting_rules = []
# 定义需要标红的内容
self.highlighting_rules.append((re.compile(r'qt'), QTextCharFormat().setForeground(QColor('red'))))
def highlightBlock(self, text):
for pattern, format in self.highlighting_rules:
for match in pattern.finditer(text):
self.setFormat(match.start(), match.end() - match.start(), format)
```
使用上述自定义的 QSyntaxHighlighter 子类:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
if __name__ == '__main__':
app = QApplication([])
win = QMainWindow()
# 创建 QTextEdit 组件
textEdit = QTextEdit(win)
# 设置文本格式为自定义的 QSyntaxHighlighter 子类
highlighter = Highlighter(textEdit.document())
win.setCentralWidget(textEdit)
win.show()
app.exec_()
```
运行此程序,你会看到在 QTextEdit 中输入的所有 "qt" 都被标为红色。
阅读全文