如何在qwebview中滚动页面?
我想这应该是个简单的任务:改变一个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这个事件被触发时再进行滚动。