提问者:小点点

如何将不同的变量传递给相同类型的QML


我需要将两个不同的变量传递给相同类型的QML,但是我没有成功。 这些变量是“DataTelemetry.Target1Projectory”和“DataTelemetry.Target2Projectory”。 下面的代码是这两个相同组件的实例化的表示。

Components.SimulatorItem {id: componentTarget1; name: "Alvo 1";}
Components.SimulatorItem {id: componentTarget2; name: "Alvo 2";}

在SimulatorItem中,我用这个函数来设置这些不同的变量:我取了一个名为“轨迹”的局部变量,并使其成为条件变量,但我想直接设置“DataTelemetry.target1Traghtory”。 我在QML文件中调用了“setvalues”,后者实例化了这两个组件。

>

  • SimulatorItem.qml

    function setValues(targetNumber){
    trajectory = trajectoryCombo.currentIndex
    
    if(targetNumber == "Alvo 1"){
        dataTelemetry.target1Trajectory = trajectory
    }
    if(targetNumber == "Alvo 2"){
        dataTelemetry.target2Trajectory = trajectory
    }
    

    我需要的是在每个组件SimulatorItem中设置这两个变量:“DataTelemetry.Target1Projectory”和“DataTelemetry.Target2Projectory”。


  • 共1个答案

    匿名用户

    如果您不能直接控制DataTelemetry,则可以使用Binding(请参阅qt文档):

    Components.SimulatorItem {id: componentTarget1}
    Components.SimulatorItem {id: componentTarget2}
    
    Binding {
        target: dataTelemetry
        property: "target1Trajectory"
        value: componentTarget1.trajectory
    }    
    
    Binding {
        target: dataTelemetry
        property: "target2Trajectory"
        value: componentTarget2.trajectory
    }    
    

    注释后更新

    如果你愿意,你也可以去另一个方向:

    Components.SimulatorItem {
        id: componentTarget1
    
        //updated binding
        trajectory: dataTelemetry.target1Trajectory
    
        //or one-time assignment
        Component.onCompleted: {trajectory = dataTelemetry.target1Trajectory}
    }
    

    相关问题