Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 伪造QWebEngine以运行Javascript代码';同步';_Qt_Qtwebengine_Qeventloop - Fatal编程技术网

Qt 伪造QWebEngine以运行Javascript代码';同步';

Qt 伪造QWebEngine以运行Javascript代码';同步';,qt,qtwebengine,qeventloop,Qt,Qtwebengine,Qeventloop,我正在使用QWebEngine,我想同步运行一些Javascript!或者至少假装。所以我想出了一个ol'classic,使用QEventLoop等待。我从我的QWebEngineView派生类调用此代码: void MyView::doSomething() { QEventLoop loop; const QString jsCode = "console.log('hi from javascript!');"; page()->runJavaScript(

我正在使用
QWebEngine
,我想同步运行一些Javascript!或者至少假装。所以我想出了一个ol'classic,使用
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()";
}
void MyView::doSomething()
{
QEventLoop循环;
const QString jsCode=“console.log('hi from javascript!');”;
page()->runJavaScript(jsCode,[&](constqvariant&)
{

qDebug()您是否向lambda添加了调试输出/调试以检查get是否执行?您是否可以验证您的js是否正确执行?尝试一些简单的方法,如
console.log(“测试”)
@Felix我会更新这个问题,但是是的,我有调试消息来确认我的观察结果。你有没有想出解决方案?上周我一直在尝试这样做。@Akiva没有,我没有。我最终重新设计了我必须做的事。
QWebEngine
缺少任何同步支持是一个原因在上个月,我又开始使用
QWebKit
(这就是它在发布到Mac应用商店时遇到的问题)。有时设计有点偏颇,使这种黑客行为无法奏效:)