伪造QWebEngine "同步 "运行Javascript代码。

问题描述 投票:2回答:1

我使用的是 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从未被执行。不管这是否是一个完整的黑客(它是),我很好奇为什么它不能工作。

本着完全黑客的精神,有没有一种 "更好 "的方法来完成我想做的事情?

谢谢!我使用的是QWebEngine和QWebEngine。

qt qtwebengine qeventloop
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.