c++ - 如何将不同的变量传递给相同类型的 QML
问题描述
我需要将两个不同的变量传递给相同类型的 QML,但我没有成功。变量是“dataTelemetry.target1Trajectory”和“dataTelemetry.target2Trajectory”。以下代码表示这两个相同组件的实例化。
Components.SimulatorItem {id: componentTarget1; name: "Alvo 1";}
Components.SimulatorItem {id: componentTarget2; name: "Alvo 2";}
在 SimulatorItem 中,我执行了该函数来设置这些不同的变量:我采用了一个名为“trajectory”的局部变量并使其成为有条件的,但我想直接设置“dataTelemetry.target1Trajectory”。我在实例化两个组件的 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.target1Trajectory”和“dataTelemetry.target2Trajectory”。
解决方案
如果您没有直接控制权dataTelemetry
,则可以这样使用Binding
(参见 qt docs):
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}
}
推荐阅读
- javascript - 在 MongoDB 中匹配包含数组的一组项目
- sql - 从 SQL 中 XML 类型列的某一行中删除元素?
- vb.net - VSTO 在 Outlook 中创建类似“通知栏”的消息
- java - @ContextConfiguration 不只引入指定的配置类
- flutter - 当我创建一个flutter-plugin项目时,我找不到flutter
- android - 当我单击电子邮件中的链接时如何在应用程序中路由
- angular - 为什么 unsubscribe() 需要这么多时间?
- r - 使用 R 中的其他阈值表替换数据帧中的数据
- angular - 使用 observable 的结果作为属性
- django - Django 在多个项目之间共享相同用户模型和数据库的最佳方式