首页 >后端开发 >C++ >如何将 QString 从 C 信号传递到 QML 槽?

如何将 QString 从 C 信号传递到 QML 槽?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 21:08:02985浏览

How to Pass a QString From a C   Signal to a QML Slot?

Qt:使用 QString 将 C 信号连接到 QML 插槽

在 Qt 中,将信号从 C 发送到 QML 中的插槽可以很简单。然而,当涉及到将 QString 作为参数传递时,可能会出现一些挑战。

问题:
您正在将信号从 C 对象 (myObj) 连接到QML 文件中的槽 (updateViewWithItem)。该插槽被定义为接收 QString 参数,但连接失败并出现错误:“No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)”。

解决方案:使用连接

Qt 建议在此特定场景中使用 Connections,而不是使用传统的 C 风格插槽信号连接。

步骤:

  1. 在 QML 中公开您的 C 对象:
    在 QML 文件中设置上下文属性,以使 QML 可以访问您的 C 对象 (myObj)。

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
  2. 定义您的信号:
    您的信号应定义如下:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
  3. 创建 QML 连接:
    在你的 QML 文件中,添加一个 Connections 对象来处理连接。

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

通过使用 Connections,你可以有效地在 C 和 QML 之间建立一座新的桥梁,让你可以通过QString 作为 QML 槽的参数。

以上是如何将 QString 从 C 信号传递到 QML 槽?的详细内容。更多信息请关注PHP中文网其他相关文章!

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