Обман QWebEngine для синхронного запуска кода Javascript
Я использую QWebEngine
и я хотел бы запустить некоторые Javascript синхронно! Или хотя бы притворяться. Так что я придумал ол классику, используя QEventLoop
ждать. Я называю этот код из моего QWebEngineView
производный класс:
void MyView::doSomething()
{
QEventLoop loop;
const QString jsCode = "console.log('hi from javascript!');";
page()->runJavaScript(jsCode,[&](const QVariant&)
{
qDebug() << "script done!";
loop.quit();
});
qDebug() << "calling loop.exec()";
loop.exec();
qDebug() << "finished loop.exec()";
}
Однако это не работает, поскольку лямбда никогда не выполняется. Независимо от того, является ли это полным взломом (так оно и есть), мне любопытно, почему это не работает.
И в духе того, что это полный взлом, есть ли "лучший" способ выполнить то, что я пытаюсь сделать?
Спасибо!