如何找到在 QTextBrowser 中可见的文档中的位置?

How do I find the position in the document that is visible in a QTextBrowser?

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

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

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

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

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

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

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

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