我使用的是 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。