您的位置:首页 > 编程语言 > Qt开发

qt与js/html进行值传递

2017-06-13 14:27 190 查看
ps:由于想要js去读取本地的一个文件,但是由于qt的QWebView不支持ActiveX控件,而QAxWidget虽然支持ActiveX控件,但是效果和用法感觉没有QWebView那么好,所以,我就将其改造成了,由js发送一个消息给qt进行数据的读取,然后将该数据发送给js。这样就不需要ActiveX控件的支持了具体的操作如下:1.头文件的内容public slots://将object对象发送给jsvoid populateJavaScriptWindowObject();//给js发送文本内容void on_pushButton_clicked();//js反馈信息void onCall(QString strText);2.实现文件void MainWindow::populateJavaScriptWindowObject(){ui->webView->page()->mainFrame()->addToJavaScriptWindowObject(QString("mywebkit"),this);}void MainWindow::on_pushButton_clicked(){QString strVal = QString("OnMsgFromQt("%1");").arg(ui->text->text());ui->webView->page()->mainFrame()->evaluateJavaScript(strVal);}void MainWindow::onCall(QString strText){ui->text->setText(strText);}//构造函数中添加如下代码ui->webView->setUrl(QUrl("file:///D:/text.html"));ui->webView->show();connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(populateJavaScriptWindowObject()));3.测试的js文本                          function SendToQt()        {          var textArray;          textArray = document.getElementsByName("testText");          window.mywebkit.onCall(textArray[0].value);                 }                            function OnMsgFromQt(qtText)        {            var textArray;            textArray = document.getElementsByName("testText");            textArray[0].value = qtText;        }Text:
        
        
PS:注意,这里的话从qt调用js的方式是以QString的方式进行传递的,如果你的参数有两个话,eg:QStringstrVal = QString("OnMsgFromQt("%1\ ", "%2" );").arg("第一个参数值").arg("第二个参数值");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt js html