捏造QWebEngine以'同步'运行Javascript代码

时间:2017-04-17 19:56:20

标签: qt qtwebengine qeventloop

我正在使用QWebEngine,我想同步运行一些Javascript!或者至少假装。所以我想出了一个ol'经典,用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永远不会被执行。无论这是否是一个完整的黑客(它是),我很好奇为什么它不起作用。

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

谢谢!

0 个答案:

没有答案