如何在 qwebview 中滚动页面?

发布于 2024-09-08 14:39:42 字数 447 浏览 9 评论 0原文

我想这应该是一个简单的任务:更改 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 个命令完全无用:页面滚动回顶部。 怎么了?

I guess this should be a simple task: change a QWebView's content (it always contains several pages of stuff) then scroll the page back in the previous position:

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())

But the 3 commands inside the if are completely useless: the page scrolls back to top.
What's wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好菇凉咱不稀罕他 2024-09-15 14:39:42

这有点猜测:

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

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

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

This is a bit of a guess:

setScrollPosition will not let you scroll beyond the end of the page.

Since you are scrolling before the page is displayed, the page's effective height is 0 at the time. You could verify this by checking self.webView.page().mainFrame().contentSize()

Maybe you should do the scrolling when contentSizeChanged is triggered.

蓝梦月影 2024-09-15 14:39:42

使用此代码

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

use this code

     ui->webView->page()->mainFrame()->scroll(ui->webView->page()->mainFrame()->contentsSize().width(), ui->webView->page()->mainFrame()->contentsSize().height());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文