0

当用户QTextBrowser在我的应用程序中滚动时,我想检索他们滚动到的文档中的位置(文档中的偏移量,而不是 GUI 位置。)

如果我可以让光标跳到那个位置,我可以得到QTextCursor.position(). 但我看不到让光标跳转到浏览器中可见位置的方法。滚动时光标停留在原位。

4

2 回答 2

1

我不完全理解你的问题的描述,但也许你可以通过调用https://doc.qt.io/qt-来确定可见区域开头和结尾的光标(即文本文档中的位置) 5/qtextedit.html#cursorForPosition

QRect rect = textBrowser->rect();
QTextCursor firstVisible = textBrowser->cursorForPosition(rect.topLeft());
QTextCursor lastVisible = textBrowser->cursorForPosition(rect.bottomRight());

我没有测试过,但我想你明白了。也许您需要使用 rect oftextBrowser->viewport()而不是 rect of textBrowser。您需要对此进行一些试验才能找到适合您的方法。

于 2021-10-28T20:57:30.727 回答
1

根据 VK 的回答,这是我在 Python 中的解决方案:

browserRect = self.mainText.rect()
newCursor = self.mainText.cursorForPosition(browserRect.topLeft())
self.mainText.setTextCursor(newCursor)
textPos = mainText.textCursor().position()

实际上,只使用QPoint(0,0)可能也可以,因为浏览器矩形的左上角非常接近 (0,0)。

于 2021-10-29T22:26:02.953 回答