QPlainText-----普通文本编辑器

本文详细介绍了QPlainTextEdit在文本编辑中的应用,涉及内容包括基本操作、格式设置、软换行与覆盖模式、文本操作、块操作、光标控制、放大缩小及滚动优化。重点展示了如何设置文本格式、处理文本块和确保光标可见性。
摘要由CSDN通过智能技术生成

1、QPlainText普通文本编辑器:主要针对纯文本进行处理(像表格等富文本 不支持),使用逐行逐段滚动方法替换像素精确高度计算。

2、占位文本和只读和字符格式:

①:占位提示文本:

 通过文本字符格式设置纯文本的格式:

    def 格式设置(self):
        tcf = QTextCharFormat()
        tcf.setFontUnderline(True)
        tcf.setUnderlineColor(QColor(100, 200, 10))
        self.pte.setCurrentCharFormat(tcf)

 3、软换行模式和覆盖模式和tab控制:

 (超过控件宽度自动进行换行)

覆盖模式:是否需要覆盖模式编辑文本。(一般都是一个字符一个字符的覆盖,成批量的就会变为插入)

    def 覆盖模式(self):
        print(self.te.overwriteMode())
        self.pte.setOverwriteMode(True)
        print(self.pte.overwriteMode())

Tab控制:

    def Tab控制(self):
        self.pte.setTabChangesFocus(True)

4、文本操作:设置是指将旧的全部替换成为新的。插入是指从光标处开始往后插入。追加:文档的末尾处追加。

 获取整个文本框中的文本:print(self.pte.toPlainText())

    def 文本操作(self):
        # 会替换原来的文本
        self.pte.setPlainText("itlike.com")
        self.pte.insertPlainText("itlike")
        self.pte.appendPlainText("<a href='https://www.itlike.com'>撩课</a>")
        # 不支持表格等富文本,2行3列
        table_str = "<table border=2>" \
                    "<tr><td>1</td><td>2</td><td>3</td></tr>" \
                    "<tr><td>4</td><td>5</td><td>6</td></tr>" \
                    "<table>"
        # 获取整个文本框中的文本
        print(self.pte.toPlainText())

5、块的操作:(限制插入文本中块的个数,即段落个数),当块的个数超过最大要求的个数时,会覆盖上边的块。

   def 块的操作(self):
        # 打印普通文本编辑器中现有的块的个数
        # 文本编辑器中有一个默认的文本框
        print(self.pte.blockCount())
        # 设置最大块的个数,完全删除了之前的内容
        self.pte.setMaximumBlockCount(3)

6、QPlainEdit常用编辑操作---放大缩小;同QTextEdit相同。

 补充:方法和缩小(QTextEdit中也存在)

    def 放大缩小(self):
        # 放大,存放一个小于0的数是缩小功能
        self.te.zoomIn(10)
        # 缩小
        self.te.zoomOut(10)

7、滚动内容以显示光标:控制文本框中的内容滚动,从而保证光标可见(处理大型的文本文档)。

 光标一开始在某一行abc之后:点击测试按钮之后保证该行处于中间位置。

   

 假设光标处于文本框中最后一行,设置可以中心滚动之后,文本框会自动留白,为文本滚动设置前提。

    class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QPlainEdit的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        pte = QPlainTextEdit(self)
        pte.resize(300, 300)
        pte.move(100, 100)
        self.pte = pte
        self.滚动保证光标可见()
        self.pte.setCenterOnScroll(True)

    def 滚动保证光标可见(self):
        # 尽可能保证光标所在的哪一行
        # 光标所在的哪一行滚动到中间位置
        self.pte.centerCursor()
        self.pte.setFocus()

使用方法ensureCursorVisible(),保证光标可见,且移动距离为最短距离。

    def 滚动保证光标可见(self):
        # 尽可能保证光标所在的哪一行
        # 光标所在的哪一行滚动到中间位置
        #self.pte.centerCursor()
        self.pte.ensureCursorVisible()
        self.pte.setFocus()

 8、光标操作:(有些方法可以去调用,但不意味着他会生效)

 获取指定位置的文本光标对象(整个文档的任何一个位置都对应一个隐藏的文本光标对象)。只要拿到文本光标对象,在对应位置插入一些东西就可以生效。

可以重写该对象的mousePressEvent方法获取点的坐标。

例如给定坐标(100, 60),由于该位置没有文本,x无法达到该范围,故光标会选择就近的文本显示。


    def 光标操作(self):
        tc = self.pte.textCursor()
        # 光标跳转到指定位置,就近选择文本
        tc = self.pte.cursorForPosition(QPoint(100, 60))
        print(tc)
        tc.insertText("itlike")
        self.pte.setFocus()

 设置、获取文本光标的宽度:

    def 光标操作(self):
        tc = self.pte.textCursor()
        # 无任何效果,因为普通文本编辑器不支持富文本编辑
        # tc.insertImage(r"D:\Desktop\OIP-C.jpg")
        # tc.insertTable(5, 6)
        # 光标跳转到指定位置,就近选择文本
        tc = self.pte.cursorForPosition(QPoint(100, 60))
        print(tc)
        tc.insertText("itlike")
        self.pte.setCursorWidth(20)
        self.pte.setFocus()

 借助文本光标的移动去控制一个锚点、一个文本光标点,可以控制选中效果。

 从当前光标位置到末尾选中:

    def 光标操作(self):
        tc = self.pte.textCursor()
        print(tc)
        tc.insertText("itlike")
        
        # 移动到文档的末尾,要一个选中效果
        self.pte.moveCursor(QTextCursor.End, QTextCursor.KeepAnchor)
        self.pte.setFocus()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值