我需要将两个不同的变量传递给相同类型的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”。
如果您不能直接控制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}
}