You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

重写QTextEdit的paintEvent以在单词周围绘制矩形

为了在QTextEdit中的单词周围绘制矩形,需要重写其paintEvent方法并使用QTextLayout类来确定单词的文本位置和范围。

以下是一个实现示例:

from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtGui import QPainter, QTextLayout, QPen


class MyTextEdit(QTextEdit):

    def paintEvent(self, event):
        # 调用父类的paintEvent以保留QTextEdit的默认行为
        super().paintEvent(event)

        # 获取QTextEdit的文本内容
        doc = self.document()
        cursor = self.textCursor()
        text = doc.toPlainText()

        # 创建QPainter对象并设置画笔样式
        painter = QPainter(self.viewport())
        painter.setPen(QPen(Qt.red))

        # 使用QTextLayout类来确定每个单词的位置和范围
        layout = QTextLayout(text, painter.font())
        pos = cursor.position() - 1
        line = doc.findBlock(cursor.position()).text()
        x = 0
        y = 0
        for word in line.split():
            index = line.find(word, pos)
            if index != -1:
                pos = index + len(word)
                layout.setText(line[index:pos])
                layout.setPos(x, y)
                rects = layout.glyphRuns()[0].glyphsBoundingRects()
                for rect in rects:
                    painter.drawRect(rect.translated(x, y))

            x += layout.glyphRuns()[0].advanceWidth(len(word)) + layout.font().pixelSize()

            if x >= self.viewport().width():
                x = 0
                y += painter.fontMetrics().height()

        painter.end()

此代码重写了QTextEdit的paintEvent方法,使用QTextLayout类来确定每个单词的文本位置和范围,并使用QPainter.drawRect方法在单词周围绘制红色矩形。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

重写QTextEdit的paintEvent以在单词周围绘制矩形 -优选内容

重写QTextEdit的paintEvent以在单词周围绘制矩形 -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询