0

私はqtとqmlの初心者です。私の問題は、main.qmlを持っていることです。ここでは、多くのコンポーネントをインポートしています。そのうちの1つはHeaderConceptと呼ばれます。このコンポーネントでは、数学関数を作成します。この結果を他のコンポーネントqml、さまざまな理由で、結果を渡すためにエイリアスを使用できません。次に、ヘッダーコンセプトで数学関数を呼び出すたびに、javascriptを使用して結果を他のqmlファイルに渡すことができるかどうかが質問です. javascript から qml で機能するか、C++ コードを使用するのが最善の方法です。エイリアス プロパティを使用しない理由の 1 つは、私のコンポーネントが CollapsiblePanel であり、他のコンポーネントのすぐ内側にとどまっているためです。ヒントや回答を受け入れます。

    ComprobantDelegate
    {
        id: comprobantCase

        //property alias totalOfVaucher: comprobant.totalOfVaucher
        //color: "#939393"; radius: 2; border.width: 1; border.color: "#716f6f"
    }

    ListModel {
        id: displaySettingsComprobant
        ListElement { }
    }


    CollapsiblePanel
    {
        id: panelComprobant
        width: 520
        height: parent.height
        titleText: "Datos Comprobante"
        customModel: displaySettingsComprobant
        customDelegate: comprobantCase
    }

これは main.qml のコンポーネントの私の宣言です。問題の一部は Comprobant のデリゲートにあると思います

4

1 に答える 1

2

HeaderConcept コンポーネントでシグナルを宣言し、数学関数が完了したときにそれを発行できます。

HeaderConcept {
   signal mathDone(int result)
   ...

   function math() {
      // math part here
      mathDone(result)
   }
}

main.qml にインポートする場合:

HeaderConcept {
    id: hc
}

SomeOtherComponent {
    ...

    function headerConceptMathHandler(mathResult) {
        // your handling code
    }

    Component.onCompleted: hc.mathDone.connect(headerConceptMathHandler)
}
于 2013-09-06T03:08:15.177 に答える