如何找到在 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)。
当用户在我的应用程序中滚动 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)。