QT Webkit与JS通信
来源:互联网 发布:maven配置阿里云仓库 编辑:程序博客网 时间:2024/06/16 16:59
QT环境下开发带内嵌页面的客户端程序都是通过QWebVeiw来显示网页。
QWebView *view = newQWebView(parent);
view->load(QUrl("http://qt.nokia.com/"));
view->show();
但是,以上简单的代码仅仅只是页面显示,因为默认情况下,出于安全的考虑,是没有任何c++对象插入到web中的。为了让web能够访问本地对象,C++应用程序必须通过以下的方式允许web访问,代码如下:
QWebFrame *frame =myWebPage->mainFrame();
frame->addToJavaScriptWindowObject("someNameForMyObject",myObject);
QWebFrame::addToJavaScriptWindowObject() ,将一个本地对象插入到web环境中。至此,JS就可以通过链接本地对象的信号的方式与C++通信了;
Ø 将JS全局函数连接到本地对象的信号
functionmyInterestingScriptFunction() { ... }
...
myQObject.somethingChanged.connect(myInterestingScriptFunction);
Ø 将JS成员函数连接到本地对象的信号
var obj = { x: 123 };
var fun = function() { print(this.x); };
myQObject.somethingChanged.connect(obj, fun);
当C++需要调用JS时,只需要简单的发送信号即可:
myQObject.somethingChanged("hello");
JS可以通过调用本地C++对象的方法,与C++通信。本地C++对象须满足以下要求:
1、 本地对象须从QObject派生
2、 必须打开QT源对象宏
3、 供JS调用的方法必须是 Q_INVOKABLE
EG:
class myQObject : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE voidthisMethodIsInvokableInQtScript();
void thisMethodIsNotInvokableInQtScript();
...
};
JS也可以通过访问C++对象属性与c++通信。
如果c++本地对象的属性如下定义:
Q_PROPERTY(bool enabled READenabled WRITE setEnabled)
那么JS访问其属性的代码如下:
myQObject.enabled = true;
...
myQObject.enabled = !myQObject.enabled;
- QT Webkit与JS通信
- webkit与qt webkit
- QT Webkit 添加JS对象
- Qt WebKit与JavaScript交互
- QT 与webkit(wke) 交互
- js与java互调(webkit开发)
- UIWebView 网页与js交互 webKit
- flash与js通信
- js与applet通信
- AS3与JS通信
- java与js通信
- IOS与JS通信
- JS与ANDROID通信
- uiwebview 与js 通信
- WKWebView与js通信
- UIWebView与js通信
- Qt网络与通信-UDP
- QT C++ 与 qml 通信
- getopt命令详解
- Learning-Markdown (Markdown 入门参考)
- 子矩阵
- Ubuntu 忘记root密码 如何解决
- hadoop配置(个人总结)
- QT Webkit与JS通信
- 08黑马程序员_枚举,结构,数组
- HDU2209--翻纸牌游戏
- 无法启动此程序 因为计算机中丢失opencv_core243d.dll-我的解决方案
- 解决ubuntu 下不能播放wmv等格式视频的方法
- hibernate本地事务、全局事务
- 经营外贸网站的9个关键细节
- linux下创建一个新用户,并能使用sudo命令
- 1020. Tree Traversals