我想让QWebEngine的scrollBar用转盘上下滚动。较旧的Qt版本在QWebView.scroll(int)中具有此功能。如何在QWebEngine中实现此功能?
我首先使用Qt 5.12附带的simplebrowser模板。
我已经尝试运行
QWebEngineView()->page()->runJavaScript(QString("window.scrollTo(%1, %2);").arg(scrollX).arg(scrollY));
找到了here。
但是那没有用。我还尝试将焦点设置到WebPage上,并让代码模拟向下按下页面的键。那也不起作用。
这是WebView的onDialChanged(int)函数。当浏览器窗口上的转盘更改时会调用它。
int WebView::previousDial = 0;
int WebView::diff = 0;
void WebView::onDialChanged(int value) {
int diff = value - this->previousDial;
this->previousDial = value;
std::cout << diff << std::endl;
if(diff > 0) {
this->setFocus();
this->page()->runJavaScript(QString("window.scrollTo(%1, %2);").arg(0).arg(500), QWebEngineScript::ApplicationWorld);
}
else {
this->setFocus();
this->page()->runJavaScript(QString("window.scrollTo(%1, %2);").arg(0).arg(500), QWebEngineScript::ApplicationWorld);
}
}
目前,出于测试目的,它只能滚动500。一旦工作,我将获得基于值的滚动距离。
我希望当拨盘更改时,页面将向下滚动500像素。当我运行该程序时,它不会滚动,并且收到消息DuplicateHandle failed: Access is denied
我应该使用QWebChannel来做到这一点吗?还是我改用qt.window.scrollBy()?
我开始认为Qt尚无法实现。我可能只是用电子来改造我的项目。