当用户QTextBrowser
在我的应用程序中滚动时,我想检索他们滚动到的文档中的位置(文档中的偏移量,而不是 GUI 位置。)
如果我可以让光标跳到那个位置,我可以得到QTextCursor.position()
. 但我看不到让光标跳转到浏览器中可见位置的方法。滚动时光标停留在原位。
当用户QTextBrowser
在我的应用程序中滚动时,我想检索他们滚动到的文档中的位置(文档中的偏移量,而不是 GUI 位置。)
如果我可以让光标跳到那个位置,我可以得到QTextCursor.position()
. 但我看不到让光标跳转到浏览器中可见位置的方法。滚动时光标停留在原位。
我不完全理解你的问题的描述,但也许你可以通过调用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
。您需要对此进行一些试验才能找到适合您的方法。
根据 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)。