是否可以将信号从javascript连接到qml

Is it possible to connect a signal from javascript to qml?

本文关键字:javascript 连接 qml 信号 是否      更新时间:2023-09-26

我是qt和qml的菜鸟,好吧,我的问题是我有一个main.qml,在这里我导入了许多组件,其中一个称为HeaderConcept,在这个组件中我做了一个数学函数,我想将此结果传递给其他组件qml,由于各种原因我无法使用别名传递结果,然后我的问题是我是否可以使用JavaScript将结果传递给其他QML文件, 每次我在 HeaderConcept 中调用数学函数时,例如从 JavaScript 调用 qml 中的函数,或者最好使用C++代码。为什么不使用别名属性的原因之一意味着因为我的组件是 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 的代表

您可以在 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)
}