2010-07-10 5 views
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()) 

그러나 3 명령 완전히하는 경우 a QWebView의 내용을 변경할 수는 이전 위치에 다시 페이지를 스크롤 (항상 물건의 여러 페이지를 포함) 쓸데없는 : 페이지 맨 위로 스크롤합니다. 무엇이 잘못 되었나요?

setScrollPosition 당신이 페이지의 끝을지나 스크롤 못하게 :

답변

2

이 추측의 비트입니다.

페이지가 표시되기 전에 스크롤하고 있기 때문에 페이지의 유효 높이는 0입니다. contentSizeChanged가 트리거 될 때 스크롤해야 할 수도 있습니다. self.webView.page(). mainFrame() .contentSize()

+0

나는 qscrollarea 특히 qwebview,하지만 합리적인 보이는 당신이 말한, 나는 또 다른 qwebview 곧 그것을 확인 것이라고 배치했습니다. 고맙습니다. –

+0

마지막으로, 내용 (self.scrollpos = aWebView.page(). mainFrame(). scrollPosition())을 업데이트하기 전에 스크롤 위치를 저장 한 다음 제안 된대로 (aWebView.page()) contentSizeChanged 이벤트에 복원하려고했습니다. mainFrame(). setScrollPosition (self.scrollpos)). 작동합니다. 고마워요. –

1

사용이 코드는

 ui->webView->page()->mainFrame()->scroll(ui->webView->page()->mainFrame()->contentsSize().width(), ui->webView->page()->mainFrame()->contentsSize().height()); 
관련 문제