开发环境 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、运行截图