2

我正在使用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()";
}

但是,这不起作用,因为 lambda 永远不会执行。不管这是否是一个完整的黑客(它是),我很好奇它为什么不起作用。

本着完全破解的精神,是否有一种“更好”的方式来完成我想要做的事情?

谢谢!

4

0 回答 0