Qt5 与JavaScript互调

开发环境 Qt5.5.1、Qt Creator 3.5.1 

Qt和android一样,可以通过WebView与JavaScript进行交互。

1、首先创建一个项目,修改“mainwindow.ui”,添加如下控件


2、向pro文件添加webkitwidgets组件声明

QT += webkitwidgets

3、创建测试用的html文件

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<script>
function doJavascript() {
	document.getElementById("text").value="JavaScript";
	window.JsIntr.doJavascript2("JavaScript");
	document.getElementById("text").value="JavaScript ok";
}
function doQt() {
	document.getElementById("text").value="Qt";
}
</script>
<body>
<p>chy龙神 CSDN 博客Qt专栏</p>
<input type="text" id="text" value=""/>
<input type="button" value="button" οnclick="doJavascript()"/>
</body>
</html>
4、实现Qt和Js互调

(1)mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QWebFrame>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public slots:
    void addToJavaScriptWindowObject();
    void doJavascript2(QString str);
    void doQt();
private:
    Ui::MainWindow *ui;
    QWebFrame* webFrame;
};
 
#endif // MAINWINDOW_H
 (2)mainwindow.cpp 

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    webFrame = ui->webView->page()->mainFrame();
//    ui->webView->load(QUrl(QString("file:///C:\\Users\\chenjia2014\\Desktop\\temp\\qt\\QWebDemo\\test.html")));
    connect(webFrame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addToJavaScriptWindowObject()));
    connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(doQt()));
    ui->webView->load(QUrl::fromLocalFile("C:\\Users\\chenjia2014\\Desktop\\temp\\qt\\QWebDemo\\test.html"));
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::addToJavaScriptWindowObject()
{
    webFrame->addToJavaScriptWindowObject("JsIntr", this);
}
 
void MainWindow::doJavascript2(QString str)
{
    ui->plainTextEdit->setPlainText(str);
}
 
void MainWindow::doQt()
{
    ui->plainTextEdit->setPlainText("Qt");
    webFrame->evaluateJavaScript("javascript:doQt()");
}
 5、运行截图 




  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值