【问题标题】:Sharing (Q)WebChannel between C++ and QML在 C++ 和 QML 之间共享 (Q)WebChannel
【发布时间】:2017-06-02 07:59:25
【问题描述】:

我想向 JS 公开一些 C++ 对象。到目前为止,我已经使用修饰符 Q_OBJECT Q_POPERTY Q_INVOKABLE 等将对象正确暴露给 QML。该部分工作正常。

当然,在 C++ 方面,我正在创建一个 WebChannel 并使用以下内容公开一个对象:

QWebChannel *channel = new QWebChannel();
channel->registerObject("test", prueba);

另一方面,我有一个使用WebEngineViewWebChannel 的QML 文件。我想知道如何连接 C++ 和 QML 之间的通道。

我见过很多像this 这样的例子,但我不知道如何将它与QML 集成。

有什么想法吗?

【问题讨论】:

标签: javascript c++ qt qml


【解决方案1】:

您不应在 QML 和 C++ 中都创建新的 (Q)WebChannel。通过这种方式,您可以获得两个不同的频道。

如果你想在QML中访问频道,我建议构造一个WebChannel,实际上是一个QQmlWebChannel,并且继承了QWebChannel

【讨论】:

  • 假设我只在 C++ 中创建 QWebChannel。我如何告诉 QML 使用该通道?我看到的所有文档和示例对我来说都很模糊。
  • 您可以使用setContextProperty 将对象传递给qml,但您应该考虑创建一个QQmlWebChannel,以便能够在QML 中访问其所有属性。
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 2013-07-26
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2012-07-26
相关资源
最近更新 更多