在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 槽之間傳遞非基元類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!