Qt では、非プリミティブ型を処理するときに、C クラスから QML スロットに信号を接続すると、エラーが発生することがあります。たとえば、C 信号から QML スロットに QString を渡そうとすると、「Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)」というエラーが発生する可能性があります。
この問題を解決するには、従来の QObject::connect メソッドの代わりに QML 接続を利用します。実装方法は次のとおりです:
オブジェクトを QML に追加します: C コードで、setContextProperty.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>を使用して myObj オブジェクトを QML に公開します。
信号を定義します。 C クラスで、次のように信号を宣言します。
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
接続の追加QML: QML ファイルで、次のように接続を定義します:
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
これらの手順に従って、C 信号と QML スロット間の接続を確立できます。これにより、カスタム データ型をシームレスに渡して処理できるようになります。
以上がC シグナルと QML スロット間で非プリミティブ型を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。