我正在使用QWebView并调用setHtml()来显示一些HTML/JavaScript页面。我使用QWebFrame :: evaluateJavaScript通过传递包含对JavaScript函数(带参数)的调用的QString来传递数据更新。在阅读了关于Qt WebKit Bridge之后,我觉得应该有更好的方式来做他的工作。我看到有关将C++中的Qt对象/函数暴露给JavaScript的讨论,但没有涉及到其他方向。 (我不希望JavaScript来轮询C++端的更新。)有没有将JavaScript函数作为插槽连接到Qt/C++信号的方法? (或者类似的模式)我觉得我已经浏览了很多文档,发布了问题(即使是我输入的“类似问题”),但没有看到这方面的例子。欣赏任何信息,链接或向正确的方向推动。Qt Webkit Bridge:C++访问JavaScript
3
A
回答
2
使用addToJavaScriptWindow对象暴露你的C++对象的JavaScript层:
page()->mainFrame()->addToJavaScriptWindowObject(QString("myObject"), myObject);
检查文档在这里: http://qt-project.org/doc/qt-4.8/qwebframe.html#addToJavaScriptWindowObject
,将暴露你的C++ myObject的是 “myObject的”。
然后,你可以做的正是你所期待的在您的文章,让我们假设myObject的声明以下列方式的信号:
信号:
mySignal(QString aParameter);
您可以在信号简单地连接到您的网页上的插槽如下:
myObject.mySignal.connect(this,this.mySignalSlot);
在这种情况下,mySignalSlot应该比在C++类侧mySignal声明相同的签名(当然,“相同的签名”将意味着相同数量的参数,如JavaScript没有类型,所以你不会需要为每个人声明一个类型)。
这里真正有用的是传递JSon对象。如果你需要传递大量的数据,你可以使用base64编码。对于图像,QTWebKit支持本地QImage和QPixmap类;最后两个是通过QTWebKit Bridge引擎原生编码为复杂的JavaScript对象。
相关问题
- 1. 访问WebKit Devtools JavaScript库
- 2. 使用Javascript访问webkit-gradient属性
- 3. Qt C++ WebKit windowCloseRequested Signal
- 4. Qt:如何访问WebKit页面上的实际小部件?
- 5. Qt WebKit Printing Shrink Factor
- 6. 如何访问webkit-fake-url
- 7. Qt-webkit WebSocket协议
- 8. Qt/webkit和闪光灯
- 9. 访问JavaScript中的-webkit-供应商名称
- 10. Qt WebKit和永久饼干
- 11. 的Qt WebKit的教程C++
- 12. 使用GTK + Webkit Webview(和Qt WebKit桥接器)从JavaScript/HTML调用C++
- 13. 在Qt中获取http状态WebKit
- 14. 访问让QAxBase获取(Qt)
- 15. Qt如何访问资源
- 16. 的Qt - 访问束路径
- 17. QT写访问冲突
- 18. Qt可访问小工具
- 19. C++访问对象,QT
- 20. Qt webkit编程,JavaScript数据类型对应的Qt数据类型是什么?
- 21. 访问DOM的Webkit目标C
- 22. WebKit可以访问哪些功能?
- 23. 的Qt Webkit的桥梁ActiveQt可串
- 24. 修改JavaScript访问变量
- 25. 如何从Qt访问javascript中的数据?
- 26. -webkit-box-shadow在Qt Webkit上无法正常工作
- 27. 为什么Qt Webkit呈现与Chromium webkit不同
- 28. QT WebKit - 协议“”是未知的
- 29. 问题,通过使用Qt加载特定网站的Webkit
- 30. QT Webkit似乎无视新的无线网络连接
什么,具体是你想要做什么?推C++ >> JS或相反? – amwinter 2013-05-18 11:02:46