2017-11-23 24 views
1

속성이 p1, p2, p3 ... pnFlowChart 요소가 있습니다. 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이 나타납니다

나는 해결책 그렇게 상상한다.

문제점을 설명해 주시겠습니까? 부모님의 부모님을 잘못된 길로 말하려고한다는 단서가있는 것 같습니다.

답변

1

ApplicationWindow은 no Item이므로 no 속성은 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 
    } 
}