gpt4 book ai didi

qt - 我可以在没有 QWebChannel 的情况下访问 QtWebEngine 的底层 IPC 吗?

转载 作者:行者123 更新时间:2023-12-02 01:21:47 28 4
gpt4 key购买 nike

QtWebEngine 使用 IPC 机制在 C+ Qt 世界和 JavaScript 工作之间进行通信。这种机制用于 QWebChannel,它似乎是基于 WebSockets 的。有没有一种方法可以在不使用 QWebChannel 的情况下使用底层 IPC 或 WebSockets,因为后者似乎仅限于字符串或 JSON 编码数据?

背景:我写了一个应用QtDomTerm这是一个基于 JavaScript 的终端仿真器,它使用 QWebChannel 将输入/输出从 PTY 连接到 QtWebEngine。这工作得很好,但有一个与 utf8/字符串转换相关的故障。理想情况下,我想从 PTY 发送原始字节,并在 JavaScript 中进行字节到文本的转换。但是 QWebChannel 太高级了,只能处理字符串或 JSON 编码的数据。它不处理 QByteArray。

当然有多种方法可以解决我的问题。一种是手动创建 WebSocket 服务器,并让 QtWebEngine 中运行的 JavaScript 连接到它。但看起来这就是幕后发生的事情,使用 qt.webChannelTransport。如果我可以访问底层传输(类 WebChannelIPCTransportHost 似乎是相关的),这似乎是最有效和最优雅的。

有人试过这样的东西吗? IE。我想使用 QWebChannel - 除非有一种有效的方法让它传递 QByteArray。

(我改写了这个问题。有一条关于缺少研究的评论,但我大量浏览了 Qt 文档、源代码和此处,但没有找到明确的答案。)

最佳答案

是什么阻止您发送 QString::fromLatin1(data.toHex()),其中 dataQByteArray 类型?这就是你所需要的,真的。在 javascript 端使用反向转换,参见例如this question .

关于qt - 我可以在没有 QWebChannel 的情况下访问 QtWebEngine 的底层 IPC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709728/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com