加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

qt与js/html进行值传递

(2016-04-08 09:18:50)
标签:

it

http://s5/mw690/001XGUSKgy70KbQQE7O44&690

http://s16/mw690/001XGUSKgy70KbRnXGvef&690

http://s16/mw690/001XGUSKgy70KbSd8btff&690

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:QString strVal = QString("OnMsgFromQt("%1\ ", "%2" );").arg("第一个参数值").arg("第二个参数值");

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有