我本愚钝,在网上搜了一下没找到可以运行的栗子,遂在这记录一下吧。

环境: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 交互的更多相关文章

  1. 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友

    关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可

  2. webView和js交互

    与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...

  3. 李洪强iOS经典面试题147-WebView与JS交互

    李洪强iOS经典面试题147-WebView与JS交互   WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...

  4. WebView---Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true 原文地址:http://blog.csdn.net/it10 ...

  5. iOS与JS交互实战篇(ObjC版)

    前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...

  6. Android WebView加载本地html并实现Java与JS交互

    最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...

  7. WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互

    方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details ...

  8. WKWebView新特性及JS交互

    引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章 ...

  9. 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析

    作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...

随机推荐

  1. mongodb 3.4复制集配置

    1:启动三个实例 /bin/mongod --config /home/mongodb/db27017/mongodb27017.conf /bin/mongod --config /home/mon ...

  2. SQL Server 有序GUID,SequentialGuid,

    问题描述 有序的GUID性能对比,堪比自增ID integer 一个大神告诉我NEWSEQUENTIALID() 在数据迁移的时候会有问题(感谢大神指点),所以我就深挖一下这个函数. 关于NEWSEQ ...

  3. jbd2/dm-2-8 io太高

    用iotop查看发现[jbd2/dm-2-8]几乎占用了99%的io使用率,但是却没有输入输出 后来上网查找,网上有人说是个内核bug,需要升级内核,或者降低jdb2的提交次数,即重新挂载磁盘 添加c ...

  4. IIS7.5使用web.config设置伪静态的方法

    IIS 7和IIS 7.5及以后的版本估计都会使用web.config来实现伪静态规则,于是我们以前的伪静态文件必须更改.网上找了一圈,还没有发现比较全面的web.config伪静态规则,于是我们这里 ...

  5. ZT 类与类之间的四种关系

    csdn上一个好贴子:http://bbs.csdn.net/topics/390646332 类与类之间的四种关系1.依赖(Dependency)   类A在类B中作为一个成员函数的参数或者是返回值 ...

  6. 来自Google资深工程师的API设计最佳实践

    来自Google资深工程师Joshua Bloch的分享:API设计最佳实践 为什么API设计如此重要?API是一个公司最重要的资产. 为什么API的设计对程序员如此重要? API一旦发布,出于兼容性 ...

  7. tp 查询数据库时报错 A non well formed numeric value encountered

    在database.php中配置或修改 'datetime_format' => false,

  8. MySQL语法二:数据操纵语句

    数据操纵语句DML(SELECT,DELETE,UPDATE,INSERT) 一. 数据操纵语句是对数据表中的内容进行操作.比如对某个表中的某条记录或者多条记录进行增删改查操作. 一).查询 SELE ...

  9. 当你的Spring IOC 容器(即applicationContext.xml文件)忘记配到web.xml 文件中时

    当你的Spring IOC 容器忘记配到web.xml 文件中时,启动服务器就会报错. 部分错误如下: Caused by: org.springframework.beans.factory.NoS ...

  10. CAAnimation 动画支撑系统

    Model支撑:(依附对象) 从presentLayer获取数据: 渲染树为私有: -(void)addAnimation:(CAAnimation *)anim forKey:(NSString * ...