ホームページ >バックエンド開発 >C++ >QString を C 信号から QML スロットに渡す方法は?

QString を C 信号から QML スロットに渡す方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 21:08:02973ブラウズ

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 パラメーターを受け取るように定義されていますが、接続が次のエラーで失敗します: 「そのようなスロットはありません QDeclarativeRectangle_QML_2::updateViewWithItem(QString)」。

解決策: 接続を使用する

従来の C スタイルのスロット信号接続を使用する代わりに、Qt はこの特定の接続に接続を使用することを提案します。

手順:

  1. QML で C オブジェクトを公開する:
    コンテキスト プロパティをC オブジェクト (myObj) にアクセスできるようにする QML ファイルQML.

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
  2. シグナルを定義します:
    シグナルは次のように定義する必要があります:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
  3. QML を作成するConnection:
    QML ファイル内で、接続を処理する Connections オブジェクトを追加します。

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

Connections を使用すると、C と C の間に新しいブリッジが効果的に確立されます。 QML。QString をパラメータとして QML スロットに渡すことができます。

以上がQString を C 信号から QML スロットに渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。