Я хочу, чтобы полоса прокрутки QWebEngine прокручивалась вверх и вниз с помощью циферблата.Более старые версии Qt имели эту функцию с QWebView.scroll (int).Как мне реализовать эту функциональность в QWebEngine?
Я начал с использования шаблона simplebrowser, включенного в Qt 5.12.
Я уже пытался запустить
QWebEngineView()->page()->runJavaScript(QString("window.scrollTo(%1, %2);").arg(scrollX).arg(scrollY));
Found здесь .
Но это не сработало.Я также попытался установить фокус на веб-странице и заставить код имитировать нажатие клавиши вниз страницы.Это тоже не сработало.
Вот функция onDialChanged (int) WebView.Он вызывается при изменении набора в окне обозревателя.
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.Я мог бы просто переделать свой проект с электроном.