如何在qwebview中滚动页面?

5 投票
2 回答
4614 浏览
提问于 2025-04-16 01:06

我想这应该是个简单的任务:改变一个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里面的三个命令完全没用:页面还是滚回了顶部。到底哪里出问题了呢?

2 个回答

0

使用这段代码

     ui->webView->page()->mainFrame()->scroll(ui->webView->page()->mainFrame()->contentsSize().width(), ui->webView->page()->mainFrame()->contentsSize().height());
1

这有点像猜测:

setScrollPosition这个功能不会让你滚动超过页面的底部。

因为你是在页面显示之前就开始滚动,这时候页面的实际高度是0。你可以通过检查self.webView.page().mainFrame().contentSize()来验证这一点。

也许你应该在contentSizeChanged这个事件被触发时再进行滚动。

撰写回答