4

我想这应该是一个简单的任务:更改 QWebView 的内容(它总是包含几页内容)然后将页面滚动回之前的位置:

y = self.webView.page().mainFrame().scrollPosition().y()
self.webView.setHtml(looong_html_text)
if y != 0:
    self.webView.scroll(0, y)
    self.webView.page().mainFrame().scroll(0, y)
    self.webView.page().mainFrame().setScrollPosition(QPoint(0, y))
    print(self.webView.page().mainFrame().scrollPosition().y())

但是 if 中的 3 个命令完全没用:页面滚动回到顶部。怎么了?

4

2 回答 2

2

这是一个猜测:

setScrollPosition 不会让您滚动到页面末尾之外。

由于您在页面显示之前滚动,因此页面的有效高度当时为 0。您可以通过检查 self.webView.page().mainFrame().contentSize() 来验证这一点

也许您应该在触发 contentSizeChanged 时进行滚动。

于 2010-07-24T01:23:26.143 回答
1

使用此代码

     ui->webView->page()->mainFrame()->scroll(ui->webView->page()->mainFrame()->contentsSize().width(), ui->webView->page()->mainFrame()->contentsSize().height());
于 2014-11-01T18:19:58.563 回答