Обман 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()";
}

Однако это не работает, поскольку лямбда никогда не выполняется. Независимо от того, является ли это полным взломом (так оно и есть), мне любопытно, почему это не работает.

И в духе того, что это полный взлом, есть ли "лучший" способ выполнить то, что я пытаюсь сделать?

Спасибо!

0 ответов

Другие вопросы по тегам