QWebEngine - 获取当前最大滚动值

时间:2015-11-30 07:38:05

标签: javascript qt5 qtwebengine

我正在创建一个降价文本编辑器,左侧有session,用于输入文本,右侧有Caused by: java.lang.NullPointerException at com.pazandish.autpress.dataaccess.baseclasses.DAOHibernateAbstract.getSession(DAOHibernateAbstract.java:44) at com.pazandish.autpress.dataaccess.baseclasses.DAOHibernateAbstract.saveOrUpdate(DAOHibernateAbstract.java:52) at com.pazandish.autpress.bussiness.ApplicantManager.signUpApplicant(ApplicantManager.java:54) at com.pazandish.autpress.presentation.rest.IndexRestController.newApplicant(IndexRestController.java:170) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ... 65 more ,用于显示预览。

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

QPlainTextEdit

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

所以,问题是:

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

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

1 个答案:

答案 0 :(得分: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));
}