• 6891阅读
  • 3回复

[提问]QWebEnginePage的runjavascript怎样取返回值? [复制链接]

上一主题 下一主题
离线纵刀少年
 

只看楼主 倒序阅读 楼主  发表于: 2017-03-28
我会执行js的语句,向HTML页面提交值。现在的问题就是,怎样从HTML页面获取值。
比如,QWebEnginePage上有一个var  a=13;
且有JS函数
function geta()
{
return a;
}
我要获取a的值。
QWebEnginePage的runjavascript的方法原型有3个,但返回值都是void的,其中一个形参FunctorOrlambda我看不懂啥意思。


离线never_forget

只看该作者 1楼 发表于: 2017-03-28
看到 resultCallback 了吗?那就是这个函数的返回值了,这是一个回调函数,runjavascript() 函数的返回结果就是回调函数的入口参数,可以看看我的这篇博客....
http://blog.csdn.net/rvoid/article/details/59542268

离线纵刀少年

只看该作者 2楼 发表于: 2017-03-28
回 never_forget 的帖子
never_forget:看到 resultCallback 了吗?那就是这个函数的返回值了,这是一个回调函数,runjavascript() 函数的返回结果就是回调函数的入口参数,可以看看我的这篇博客....
http://blog.csdn.net/rvoid/article/details/59542268
 (2017-03-28 15:22) 

  QString d("haha");
    page->runJavaScript("maccount;", [&d](const QVariant &v) { d=v.toString();});
    qDebug()<<"outside:"<<d;
    //ui->jessionLineEdit->setText(d);


我这样写,第三句比第二句晚执行......   runJavaScript是异步的吧?
离线纵刀少年

只看该作者 3楼 发表于: 2017-03-28
自己研究到了!
关键就是在runjavaScript的第三个参数里,使用Lambda表达式,并且捕获参数列表用this,这样异步的也能在得到值后再去赋值了。代码参考如下:
  
page->runJavaScript("mjsession;",[this](const QVariant &v) {this->setJsession(v.toString());});
void MainWindow::setJsession(QString str)
{
    ui->jessionLineEdit->setText(str);
}
快速回复
限100 字节
 
上一个 下一个