QWebView 与Js 交互
我本愚钝,在网上搜了一下没找到可以运行的栗子,遂在这记录一下吧。
环境:win10 64位系统 qt 4.8.7 (mingw32) qtcreator(4.5.0)
1. 建立一个 Widgets Application 项目,修改 *.pro 文件 ,增加 QT += core gui webkit
#
#------------------------------------------------- QT += core gui webkit greaterThan(QT_MAJOR_VERSION, ): QT += widgets TARGET = testweb
TEMPLATE = app # The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0. SOURCES += \
main.cpp \
mytestwindow.cpp HEADERS += \
mytestwindow.h FORMS += \
mytestwindow.ui
在 mytestwindow.h 增加
public slots:
void loadFinished();
void onCall(QString name);
附 mytestwindow.h 全部文件
#ifndef MYTESTWINDOW_H
#define MYTESTWINDOW_H #include <QMainWindow> namespace Ui {
class MyTestWindow;
} class MyTestWindow : public QMainWindow
{
Q_OBJECT public:
explicit MyTestWindow(QWidget *parent = );
~MyTestWindow(); public slots:
void loadFinished();
void onCall(QString name); private:
Ui::MyTestWindow *ui;
}; #endif // MYTESTWINDOW_H
附 mytestwindow.cpp 全部文件
#include "mytestwindow.h"
#include "ui_mytestwindow.h"
#include <QWebView>
#include <QWebFrame>
#include <QDebug> MyTestWindow::MyTestWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyTestWindow)
{
ui->setupUi(this); QWebView *view = new QWebView(this->centralWidget());
view->load(QUrl::fromUserInput(QString("D:\\Qt\\projects\\web\\testweb\\test.html")));
connect(view, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); view->page()->mainFrame()->addToJavaScriptWindowObject("mytestwin",this);
} MyTestWindow::~MyTestWindow()
{
delete ui;
} void MyTestWindow::loadFinished()
{
QVariant f1result = ((QWebView*)sender())->page()->mainFrame()->evaluateJavaScript("f1('test param ha ha ha ~~')");
qDebug() << f1result.toString();
} void MyTestWindow::onCall(QString name)
{
qDebug()<<name;
}
附 test.html 文件
<head>
<script LANGUAGE="JavaScript">
function f1 (s)
{
alert (s)
window.mytestwin.onCall("test on call");
return "f1 result ha ha ha ~~"
}
</script>
</head>
<body>
test html
</body>
运行结果如下:

2018-2-9 ps:
问题1: 加载 https 具有ssl的网站异常。
解决1:需要 mingw32\opt\bin 目录下libeay32.dll和ssleay32.dll (qt对应mingw32) 复制 到项目的debug/release 目录以下即可。
QWebView 与Js 交互的更多相关文章
- 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友
关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可
- webView和js交互
与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...
- 李洪强iOS经典面试题147-WebView与JS交互
李洪强iOS经典面试题147-WebView与JS交互 WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...
- WebView---Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true 原文地址:http://blog.csdn.net/it10 ...
- iOS与JS交互实战篇(ObjC版)
前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...
- Android WebView加载本地html并实现Java与JS交互
最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...
- WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互
方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址 http://www.microsoft.com/downloads/details ...
- WKWebView新特性及JS交互
引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章 ...
- 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析
作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...
随机推荐
- 解决 sourcetree git ssh私钥问题
最近遇到个问题,git仓库用gitbash,更新和提交都是没问题的,用界面化工具SourceTree就一直提示下面信息: git -c diff.mnemonicprefix=false -c cor ...
- angularJS directive中的controller和link function辨析
在angularJS中,你有一系列的view,负责将数据渲染给用户:你有一些controller,负责管理$scope(view model)并且暴露相关behavior(通过$scope定义)给到v ...
- IIS 无法安装URL重写模块的解决办法 UrlReWrite (.NET`SQL技术交流 群号206656202)
下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...
- Python学习---深浅拷贝的学习
浅拷贝copy(): 修改字符串,原来的不变: 更改列表,2个同时修改,以为列表里面还涉及一个指针的索引. 简单讲就是copy()只是简单地copy了第一层,第二层不被copy 深拷贝: 需要单独的 ...
- Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101
视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...
- Java字符串工具类
import java.io.ByteArrayOutputStream;import java.io.UnsupportedEncodingException;import java.lang.re ...
- 第一周 day1 Python学习笔记
为什么要学习Python? Python擅长的领域 1. python2.x中不支持中文编码,默认编码格式为ASCII码,而python3.x中支持Unicode编码,支持中文,变量名可以为中文,如: ...
- windows10 如何关闭快速关机功能电源选项
点击右下角的电池 -> power and sleep setting -> choose what the power buttons do -> change settings ...
- What Is a Computer System?
What Is a Computer System? A combination of Five or Six Elements The term computer is used to descri ...
- jq实现随机显示部分图片在页面上(兼容IE5)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...