Qt5 与JavaScript互调

本文介绍如何在Qt中通过WebView与JavaScript进行交互。包括创建项目、配置环境、编写HTML与JavaScript代码,以及实现Qt与JavaScript相互调用的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境 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龙神 优快云 博客Qt专栏</p>
<input type="text" id="text" value=""/>
<input type="button" value="button" onclick="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、运行截图




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值