元素FlowChart
包含属性p1
,p2
,p3
... pn
。
SensorValuesSetter
必须能够使用位于其中的元素Button
来访问这些属性。
我想像这样的解决方案:
// main.qml
// ...
FlowChart {
id: flowChart
anchors.fill: parent
SensorValuesSetter {
id: valueSetterWindow
}
// ...
}
// SensorValuesSetter.qml
ApplicationWindow {
id: valueSetterWindow
// ...
GridLayout {
// ...
Label { text: "Давление 1: "; Layout.fillWidth:true; }
ValueInputField { id: p1_val_field; }
Label { text: "Давление 2: "; Layout.fillWidth:true; }
ValueInputField { id: p2_val_field; }
// ....
Button {
id: button
text: qsTr("Применить")
onPressed: {
valueSetterWindow.parent.p1.value = Number.fromLocaleString(p1_val_field.text)
valueSetterWindow.parent.p2.value = Number.fromLocaleString(p2_val_field.text)
// ...
}
}
但在这种情况下,会出现错误TypeError: Cannot read property 'p1' of undefined
或TypeError: Cannot read property 'p1' of undefined
。
你能解释一下我的问题是什么吗?我想有线索是我试图以错误的方式引用父母的父母。
答案 0 :(得分:1)
ApplicationWindow
不是Item
,因此没有属性parent
。
您可以依赖动态范围(see more on the scopes here)
或者您在新属性中明确传递父:
// SensorValuesSetter.qml
ApplicationWindow {
property Item parent // Add the missing property. Maybe some other name...
[...]
}
你实例化的地方:
SomeItem {
id: myItem
SensorValuesSetter {
parent: myItem // Set it explicitly
}
}