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 に答える