1

我正在创建一个 Markdown 文本编辑器,QPlainTextEdit左边有一个,用于输入文本,QWebEngineView右边有一个,用于显示预览。

QWebEngineView问题是当我滚动左侧面板( )时我无法同步滚动位置QPlainTextEdit。我可以以编程方式滚动QWebEngineView调用

page()->runJavaScript("window.scrollTo(0, y);")

但没有它当前的最大滚动值,我无法计算出正确的值。

所以,问题是:

有没有办法获得当前QWebEngineView的最大滚动值?相当于一个

int max = widget->verticalScrollBar()->maximum()

换句话说。

4

1 回答 1

1

我找到了解决方案。

document.body.scrollHeight是我一直在寻找的,所以我创建了一个 const 字符串:

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));
}
于 2015-11-30T09:07:12.597 回答