Qt: QString を使用して C 信号を QML スロットに接続する
Qt では、C から QML のスロットに信号を送信するのは簡単です。ただし、QString をパラメータとして渡す場合、いくつかの問題が発生する可能性があります。
問題:
C オブジェクト (myObj) からの信号をQML ファイルのスロット (updateViewWithItem)。スロットは QString パラメーターを受け取るように定義されていますが、接続が次のエラーで失敗します: 「そのようなスロットはありません QDeclarativeRectangle_QML_2::updateViewWithItem(QString)」。
解決策: 接続を使用する
従来の C スタイルのスロット信号接続を使用する代わりに、Qt はこの特定の接続に接続を使用することを提案します。
手順:
QML で C オブジェクトを公開する:
コンテキスト プロパティをC オブジェクト (myObj) にアクセスできるようにする QML ファイルQML.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
シグナルを定義します:
シグナルは次のように定義する必要があります:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
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 サイトの他の関連記事を参照してください。