qt与js/html进行值传递

qt与js/html进行值传递

qt与js/html进行值传递

qt与js/html进行值传递

ps:由于想要js去读取本地的一个文件,但是由于qt的QWebView不支持ActiveX控件,而QAxWidget虽然支持ActiveX控件,但是效果和用法感觉没有QWebView那么好,所以,我就将其改造成了,由js发送一个消息给qt进行数据的读取,然后将该数据发送给js。这样就不需要ActiveX控件的支持了
具体的操作如下:
1.头文件的内容
public slots:
//将object对象发送给js
void 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("第二个参数值");


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值