C++编辑器-8
2026-02-15 14:41:23
发布于:浙江
该代码并不完整,点此进入代码框架页面
class OutputHighlighter(QSyntaxHighlighter):
"""输出区域的高亮器"""
def __init__(self, document):
super().__init__(document)
self.highlight_formats = []
def highlight_text(self, text, color):
"""高亮指定的文本"""
format = QTextCharFormat()
format.setForeground(color)
# 查找文本在文档中的位置
document = self.document()
full_text = document.toPlainText()
# 找到文本的起始位置
start_index = full_text.find(text)
if start_index != -1:
self.highlight_formats.append((start_index, len(text), format))
self.rehighlight()
def clear_formats(self):
"""清除所有高亮格式"""
self.highlight_formats.clear()
self.rehighlight()
def highlightBlock(self, text):
"""应用语法高亮"""
for start, length, format in self.highlight_formats:
# 计算当前块在文档中的位置
block_start = self.currentBlock().position()
block_end = block_start + len(text)
# 检查高亮区域是否与当前块重叠
highlight_end = start + length
if start < block_end and highlight_end > block_start:
# 计算重叠区域
overlap_start = max(start, block_start) - block_start
overlap_end = min(highlight_end, block_end) - block_start
overlap_length = overlap_end - overlap_start
if overlap_length > 0:
self.setFormat(overlap_start, overlap_length, format)
这里空空如也

















有帮助,赞一个