Qt:使用 QString 将 C 信号连接到 QML 插槽
在 Qt 中,将信号从 C 发送到 QML 中的插槽可以很简单。然而,当涉及到将 QString 作为参数传递时,可能会出现一些挑战。
问题:
您正在将信号从 C 对象 (myObj) 连接到QML 文件中的槽 (updateViewWithItem)。该插槽被定义为接收 QString 参数,但连接失败并出现错误:“No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)”。
解决方案:使用连接
Qt 建议在此特定场景中使用 Connections,而不是使用传统的 C 风格插槽信号连接。
步骤:
在 QML 中公开您的 C 对象:
在 QML 文件中设置上下文属性,以使 QML 可以访问您的 C 对象 (myObj)。
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
定义您的信号:
您的信号应定义如下:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
创建 QML 连接:
在你的 QML 文件中,添加一个 Connections 对象来处理连接。
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
通过使用 Connections,你可以有效地在 C 和 QML 之间建立一座新的桥梁,让你可以通过QString 作为 QML 槽的参数。
以上是如何将 QString 从 C 信号传递到 QML 槽?的详细内容。更多信息请关注PHP中文网其他相关文章!