QWebEngine - 获取当前最大滚动值

Posted

技术标签:

【中文标题】QWebEngine - 获取当前最大滚动值【英文标题】:QWebEngine - get current maximum scroll value 【发布时间】:2015-11-30 07:38:04 【问题描述】:

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

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

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

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

所以,问题是:

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

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

换句话说。

【问题讨论】:

【参考方案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));

【讨论】:

以上是关于QWebEngine - 获取当前最大滚动值的主要内容,如果未能解决你的问题,请参考以下文章

Qt QWebEngine - 使用 HTML <a> 锚点

在JavaScript中获取当前页面的滚动位置

基于滚动值的 Flutter Web 视频播放

使用QWebEngineView显示html时如何获取verticalScrollBar的最大值和当前值

在最新Qt5.4,使用QWebengine,如何js调用Qt

SQL中如何使用over-partition by query获取当前值、平均值和最大值?