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

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

Mary-Kate Olsen
リリース: 2024-11-05 21:08:02
オリジナル
977 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート