我正在使用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永远不会被执行。无论这是否是一个完整的黑客(它是),我很好奇为什么它不起作用。
本着这种完全黑客的精神,是否有一种“更好”的方式来完成我想要做的事情?
谢谢!