我正在创建一个标记文本编辑器,它的左侧有一个用于输入文本的QPlainTextEdit,右侧有一个用于显示预览的QWebEngineView。
问题是,当我滚动左侧面板( QPlainTextEdit)时,无法同步QWebEngineView滚动位置。我可以通过编程方式滚动QWebEngineView调用
page()->runJavaScript("window.scrollTo(0, y);")但是如果没有当前的最大滚动值,我就无法计算出正确的值。
所以,问题是:
有没有办法获得当前QWebEngineView的最大滚动值?
int max = widget->verticalScrollBar()->maximum()换句话说。
发布于 2015-11-30 17:07:13
我找到了一个解决方案。
document.body.scrollHeight就是我要找的,所以我创建了一个常量字符串:
const QString ScrollJavaScript("window.scrollTo(0, document.body.scrollHeight * %1 / %2);");在获得编辑器(QPlainText)的当前滚动值和最大滚动值之后:
double cP = m->editor->verticalScrollBar()->value();
double maxP = m->editor->verticalScrollBar()->maximum();我执行javascript:
if( maxP > 0 )
{
m->preview->page()->runJavaScript(ScrollJavaScript.arg(cP).arg(maxP));
}https://stackoverflow.com/questions/33993580
复制相似问题