Qt 如何正确引用父对象的父对象?
有一个元素Qt 如何正确引用父对象的父对象?,qt,qml,qtquick2,Qt,Qml,Qtquick2,有一个元素流程图,其属性为p1,p2,p3pn。 SensorValuesSetter必须能够通过使用位于其深处的元素按钮访问这些属性 我想象这样的解决方案: // main.qml // ... FlowChart { id: flowChart anchors.fill: parent SensorValuesSetter { id: valueSetterWindow }
流程图
,其属性为p1
,p2
,p3
<代码>pn。
SensorValuesSetter
必须能够通过使用位于其深处的元素按钮访问这些属性
我想象这样的解决方案:
// 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:无法读取未定义的属性“p1”或TypeError:无法读取未定义的属性“p1”
你能解释一下有什么问题吗?我猜线索是我试图以错误的方式引用父对象的父对象。ApplicationWindow
不是项,因此没有属性parent
您可以依赖于动态作用域
或者在新属性中显式传递父级:
// SensorValuesSetter.qml
ApplicationWindow {
property Item parent // Add the missing property. Maybe some other name...
[...]
}
在哪里实例化它:
SomeItem {
id: myItem
SensorValuesSetter {
parent: myItem // Set it explicitly
}
}