首頁 > 後端開發 > C++ > 主體

如何將 C 訊號連接到具有原始類型的 QML 插槽?

DDD
發布: 2024-11-03 12:00:04
原創
1011 人瀏覽過

How to Connect C   Signals to QML Slots with Primitive Types?

使用基元類型將C 訊號連接到QML 插槽

在Qt 中,訊號和插槽可實現C 和QML 元件之間的無縫通訊。這種互動對於建立複雜且響應迅速的 UI 至關重要。但是,傳輸基元以外的資料類型可能會引入錯誤。

考慮以下場景:您想要將 QString 從 C 訊號傳送到 QML 插槽。預設情況下,此連線失敗,並出現類似以下內容的錯誤:

Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)
登入後複製

解決方案:使用Qt Connections

要解決此問題,您必須使用Qt Connections 進行連線插槽到訊號。連接允許更大的靈活性並支援非原始資料類型的傳遞。

步驟:

  1. 在QML 中公開C 物件:
    使用setContextProperty 在QML​​ 檔案中公開您的C 物件myObj。

    <code class="c++">qmlVectorForm->rootContext()->setContextProperty("YourObject", myObj);</code>
    登入後複製
  2. 訊號定義:
    定義訊號C :

    <code class="c++">finishedGatheringDataForItem(QString signalString)</code>
    登入後複製

  3. 在QML 檔案中,新增以下連線:

    <code class="qml">Connections {
        target: YourObject
        onFinishedGatheringDataForItem: {
            qmlString = signalString
        }
    }</code>
    登入後複製

透過使用Qt Connections,您現在可以有效地將QString 值從C 訊號傳遞到QML 插槽。

以上是如何將 C 訊號連接到具有原始類型的 QML 插槽?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板