如何以编程方式滚动QWebView中的HTML元素?

时间:2015-01-23 04:52:58

标签: html qt webkit

我正在开发一个使用Qt 5.4和WebKit支持触摸屏的浏览器(我目前没有使用QML)。目前我实现了触摸滚动,到目前为止我设法滚动页面的主框架。但是,我很难弄清楚如何滚动HTML子元素,如iframe,textarea,div等。 这是因为我知道如何滚动主框架(我可以调用webView->page()->mainFrame()->setScrollPosition(QPoint(x, y));),但不知道如何滚动网页元素。

我想通过JavaScript注入,可以检查HTML元素是否可滚动并调用滚动它的函数,但这似乎并不优雅。有没有办法只使用C ++ / Qt代码?

1 个答案:

答案 0 :(得分:1)

我花了很多时间来解决这个问题。最后我只使用了一行Javascript并完成了它。

webView->page()->mainFrame()->evaluateJavaScript("window.scrollTo(0, document.body.scrollHeight);");

另外,如果Javascript现在是这样的标准,为什么你不能在QWebView内依赖它?

滚动网页元素的Javscript类似于:

var textarea = document.getElementById('textarea_id');
textarea.scrollTop = textarea.scrollHeight;