Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何正确引用父对象的父对象?_Qt_Qml_Qtquick2 - Fatal编程技术网

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
    }
}