在 Qt 中,在处理非基本类型时,将 C 类的信号连接到 QML 槽有时会遇到错误。例如,尝试将 QString 从 C 信号传递到 QML 槽可能会导致错误:“Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)”。
要解决此问题,请使用 QML 连接而不是传统的 QObject::connect 方法。实现方法如下:
将对象添加到 QML: 在 C 代码中,使用 setContextProperty 将 myObj 对象公开给 QML。
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
定义信号: 在 C 类中,按如下方式声明信号:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
添加连接在 QML 中: 在您的 QML 文件中,定义如下连接:
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
按照以下步骤,您可以在 C 信号和 QML 槽之间建立连接,允许您无缝地传递和处理自定义数据类型。
以上是如何在 C 信号和 QML 槽之间传递非基元类型?的详细内容。更多信息请关注PHP中文网其他相关文章!