查看完整版本: [-- QWebEnginePage的runjavascript怎样取返回值? --]

QTCN开发网 -> Qt基础编程 -> QWebEnginePage的runjavascript怎样取返回值? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

纵刀少年 2017-03-28 08:55

QWebEnginePage的runjavascript怎样取返回值?

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



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


纵刀少年 2017-03-28 17:12
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是异步的吧?

纵刀少年 2017-03-28 17:53
自己研究到了!
关键就是在runjavaScript的第三个参数里,使用Lambda表达式,并且捕获参数列表用this,这样异步的也能在得到值后再去赋值了。代码参考如下:
  
page->runJavaScript("mjsession;",[this](const QVariant &v) {this->setJsession(v.toString());});
void MainWindow::setJsession(QString str)
{
    ui->jessionLineEdit->setText(str);
}


查看完整版本: [-- QWebEnginePage的runjavascript怎样取返回值? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled