Qt Webkit Bridge:C++ 访问 JavaScript

2024-01-31

我正在使用 QWebView 并调用 setHtml() 来显示一些 HTML/JavaScript 页面。我使用 QWebFrame::evaluateJavaScript 传递数据更新,方法是向其传递包含对 JavaScript 函数(带参数)的调用的 QString。在阅读了有关 Qt WebKit Bridge 的内容后,我 感觉应该有更好的方法来做到他的。我看到关于将 C++ 中的 Qt 对象/函数暴露给 JavaScript 的讨论,但没有看到其他方向。 (我不希望 JavaScript 轮询 C++ 端的更新。)有没有办法将 JavaScript 函数作为插槽连接到 Qt/C++ 信号? (或类似的模式)我觉得我已经浏览了很多文档,发布了问题(甚至是我键入此内容时的“类似问题”),但还没有看到这方面的示例。感谢任何信息、链接或正确方向的推动。


使用 addToJavaScriptWindow 对象将 C++ 对象公开到 Javascript 层:

page()->mainFrame()->addToJavaScriptWindowObject(QString("myObject"), myObject);

在这里查看文档:http://qt-project.org/doc/qt-4.8/qwebframe.html#addToJavaScriptWindowObject http://qt-project.org/doc/qt-4.8/qwebframe.html#addToJavaScriptWindowObject

这会将您的 C++ myObject 公开为“myObject”。

然后,您可以准确地执行您在帖子中查找的操作,假设 myObject 按以下方式声明一个信号:

signal:

mySignal(QString aParameter);

您可以简单地将该信号连接到网络端的插槽,如下所示:

myObject.mySignal.connect(this, this.mySignalSlot);

在这种情况下,mySignalSlot 应该与 C++ 类端的 mySignal 声明具有相同的签名(好吧,“相同的签名”意味着与 javascript 未键入的参数数量相同,因此您无需为每个参数声明类型)他们)。

这里真正有用的是传递 JSon 对象。如果您需要传递大量数据,可以使用 Base64 编码。对于图像,QTWebKit 原生支持 QImage 和 QPixmap 类;最后两个由 QTWebKit Bridge 引擎本地编码为复杂的 javascript 对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Webkit Bridge:C++ 访问 JavaScript 的相关文章

随机推荐

  • Visual Studio 2010 构建无法进行文件复制错误

    我正在 Visual Studio 2010 中构建一个项目 但构建失败 因为它无法将 assemblyname dll 文件从 obj 复制到 bin 文件夹 确切的错误消息是 错误7 无法将文件 obj Debug AssemblyNa
  • 获取不包含给定列值的子集

    我有一张桌子叫data A 22 B 333 C Not Av D Not Av 我怎样才能获得一个子集 其中所有行都包含 Not Av 被排除在外 值得一提的是 我有要检查的列的索引 在本例中colnum 2 但我不知道它的名字 我尝试了
  • 为什么 .NET 框架中没有托管 MD5 实现?

    重写的问题 请参阅原始历史 问题就在标题里 为什么 NET 框架中没有托管 MD5 实现 我具体说的是一个纯托管代码MD5算法的实现 NET框架中不存在该算法 在 System Security Cryptography 命名空间中 我知道
  • 使用 SQLite 修复数据路径未找到错误

    我已经让 sqlite 数据库在编辑器中工作得很好 然而 当在 Android 中使用它时 我收到一条错误消息 指出未找到数据路径 我相信我在正确的plugins android 文件夹中拥有所需的 libsqlite so 文件以及编辑器
  • 无法在 Apache Airflow 中设置 DB2/DashDB JDBC 连接

    我正在尝试使用 Airflow UI 创建 DB2 DashDB 连接 我添加了 db2jcc4 jar 驱动程序并提供了路径以及类名 com ibm db2 jcc DB2Driver class 我尝试运行一个简单的查询 在临时 UI
  • 获取页面上特定类型的所有Web控件

    我一直在思考如何获取页面上的所有控件 然后在此相关问题中对它们执行任务 如何以编程方式搜索 C DropDownList https stackoverflow com questions 869122 how to search thro
  • 为什么我的子域重定向到我的主域?

    所以基本上 我有一个子域 m mydomain com au尽管每次我访问它时 我都会被重定向到www mydomain com au m 例如 如果我尝试去m mydomain com au contact php 我会自动重定向到www
  • Python Bottle - 如何在不关闭服务器的情况下上传媒体文件

    我正在使用来自的答案这个问题 https stackoverflow com questions 14296438 bottle file upload and process并看到评论 raw data file read This is
  • UIImage 调整纵横比填充和裁剪

    我有这个代码 我拍摄了一张尺寸为 2448x3264 的照片 我需要调整大小并调整到左上角的屏幕显示 对不起我的英语谢谢 void imagePickerController UIImagePickerController picker d
  • 如何解决“应用程序在使用 Google Play 服务时遇到问题。请重试。”

    我已经用react native做一个项目大约4个月了 现在使用 react native 0 57 4 它由我正在渲染 修改 开发的地图视图组成 react native maps 0 22 1 突然我现在遇到了这个错误 App is h
  • 如何在 python/django 中 fork 一个进程?

    然而 在 django 的上下文中 这更像是一个 Python 常见问题 现在我在 django 中有这个视图 它必须处理大量数据 通常 服务器 使用代理运行的 nginx 和 django 需要几分钟才能完成此操作 有时服务器会超时 我不
  • adb 无法在 Ubuntu 64 上运行 - 找不到命令

    Update 在做了更多实验之后 我必须完全重新表述我的问题 因为我被终端愚弄了 只是我发出来的时候并没有显示错误信息须藤 adb 如果我 cd 进入 ANDOID SDK platform tools 目录并运行 adb I get co
  • CSS - 如何强制元素达到父元素剩余/可用空间的 100%,而不超出它?

    在我看来 这似乎是一个非常业余的问题 但尽管如此 它仍然是一个令人沮丧的异常情况 这实际上是两部分问题的第二部分 第一部分是一个相当常见的部分 涉及让元素拉伸到其父对象的 100 高度 在我的演示中 我有以下 HTML div DIV 1
  • jQuery UI datepicker:配置键盘快捷键

    我用jQuery UI 日期选择器 http jqueryui com demos datepicker 让用户选择一个日期 它有一些快捷键 以便可以使用键盘进行控制 page up down previous next month ctr
  • 动态库映像不包含x86_64、i386架构

    我正在尝试为 iOS 构建动态库 并结合架构 armv7 armv7s arm64 i386 x86 64 Here is my target s Build Settings 如您所见 我已将 x86 64 和 i386 添加到架构 an
  • 在 iPad 上调试 JavaScript 错误

    有什么方法可以调试在 iPad 上运行的 JavaScript 页面吗 转到此位置 并启用调试控制台 iOS6 调试控制台消失了 使用替代方案使其发挥作用 例如 Firebug Lite 看看这里的相关问题 iOS6 删除了 iPad 的控
  • 不存在的模型类的雄辩关系

    我希望在我的应用程序中拥有许多模型 模块 但其中一些模型 模块将被某些客户删除 现在我有这样的关系 public function people return this gt hasMany People model id 当我跑步时 mo
  • Java 虚拟机和交换空间

    感谢这里的任何专家可以就以下 JVM 和交换空间相关查询提供建议 提前致谢 1 当 JVM Java 堆 永久代或本机堆中发生内存不足时 操作系统将使用交换空间 我对吗 或者交换空间用于本机堆中的内存不足 2 我是否正确 本机堆大小在 JV
  • 在 iOS SDK 中使用短信/彩信发送附件

    在 iOS 7 中 支持通过第三方应用程序在短信中添加附件 我想知道 支持哪些类型的文件作为附件 例如 png pdf 等 我可以通过短信 彩信发送 NSData 吗 例如 dat 格式 这些邮件的收件人是否能够使用 iOS 的 打开方式
  • Qt Webkit Bridge:C++ 访问 JavaScript

    我正在使用 QWebView 并调用 setHtml 来显示一些 HTML JavaScript 页面 我使用 QWebFrame evaluateJavaScript 传递数据更新 方法是向其传递包含对 JavaScript 函数 带参数