首页  >  文章  >  后端开发  >  如何在 C 信号和 QML 槽之间传递非基元类型?

如何在 C 信号和 QML 槽之间传递非基元类型?

Patricia Arquette
Patricia Arquette原创
2024-11-02 16:26:29265浏览

How to Pass Non-Primitive Types Between C   Signals and QML Slots?

C 和 QML 之间的信号槽连接故障排除

在 Qt 中,在处理非基本类型时,将 C 类的信号连接到 QML 槽有时会遇到错误。例如,尝试将 QString 从 C 信号传递到 QML 槽可能会导致错误:“Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)”。

解决方案:使用连接

要解决此问题,请使用 QML 连接而不是传统的 QObject::connect 方法。实现方法如下:

  1. 将对象添加到 QML: 在 C 代码中,使用 setContextProperty 将 myObj 对象公开给 QML。

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
  2. 定义信号: 在 C 类中,按如下方式声明信号:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
  3. 添加连接在 QML 中: 在您的 QML 文件中,定义如下连接:

    <code class="qml">Connections {
        target: YourObject
        onFinishedGatheringDataForItem: {
            qmlString = signalString
        }
    }</code>

按照以下步骤,您可以在 C 信号和 QML 槽之间建立连接,允许您无缝地传递和处理自定义数据类型。

以上是如何在 C 信号和 QML 槽之间传递非基元类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn