我不断生成我在QWebView
中显示的新HTML页面。如果HTML包含图像,我现在无法在setHtml()
调用后恢复垂直滚动条的当前位置。滚动条总是跳回到顶部。
只要HTML仅包含文本:
,以下代码就可以正常工作void MainWindow::htmlResultReady(const QString &html)
{
// remember scrollbar position
int scrollBarPos = ui->webView->page()->mainFrame()->scrollBarValue(Qt::Vertical);
ui->webView->setHtml(html);
// restore previous scrollbar position
ui->webView->page()->mainFrame()->setScrollBarValue(Qt::Vertical, scrollBarPos);
}
我还尝试使用信号QWebView :: loadFinished()但没有成功:
void MainWindow::setupHtmlPreview()
{
connect(ui->webView, SIGNAL(loadFinished(bool)),
this, SLOT(restoreScrollBarPosition()));
}
void MainWindow::htmlResultReady(const QString &html)
{
// remember scrollbar position
scrollBarPos = ui->webView->page()->mainFrame()->scrollBarValue(Qt::Vertical);
ui->webView->setHtml(html);
}
void MainWindow::restoreScrollBarPosition()
{
// restore previous scrollbar position
ui->webView->page()->mainFrame()->setScrollBarValue(Qt::Vertical, scrollBarPos);
}
答案 0 :(得分:2)
也许页面的大小会发生变化。在框架发出setScrollBarValue
时调用contentsSizeChanged
(通常为webView->page()->mainFrame()
)。