不同行高的情况需要 QTextEdit 设置展示第100个字符所在文本
时间: 2024-03-21 16:43:38 浏览: 43
QT QTextEdit富文本插入字体-表格-编号-图片-查找-语法高亮功能.rar
如果存在不同行高的情况,需要根据字符所在的位置计算出对应的滚动条位置。可以使用QTextDocument的documentLayout()函数获取文档的布局指针,然后调用positionToRectangle()函数计算出字符所在的矩形区域,进而计算出需要将滚动条滚动到哪个位置。具体代码如下:
```python
# 获取文档布局指针
layout = textEdit.document().documentLayout()
# 计算第100个字符所在的位置
position = textEdit.document().findBlockByLineNumber(0).position()
position += 100
# 计算第100个字符所在的矩形区域
rect = layout.positionToRectangle(position)
# 将滚动条设置到目标位置处
scrollbar = textEdit.verticalScrollBar()
scrollbar.setValue(rect.y())
```
在这段代码中,我们首先获取文档的布局指针layout,然后计算出第100个字符所在的位置position。接着调用layout的positionToRectangle()函数计算出该位置所在的矩形区域rect,最后将滚动条设置到该矩形的y坐标处。注意,由于不同行的高度可能不同,因此这里使用y坐标而非行号来进行滚动条的设置。
阅读全文