Qml - 在两个组件之间传递属性值

时间:2017-04-10 08:33:54

标签: qt properties qml components

这是我在main.qml文件中处理的情况的简化:

Component {
 id: component1
 property string stringIneedToPass: "Hello"
 Text { text: stringIneedToPass }
}
Component {
 id: component2
 Rectangle {
  id: myRectangle
  property string stringIneedToReceive = component1.stringIneedToPass; //this doesn't work
 }
}

显然我的情况更复杂。但最后我只需要了解应该如何进行这种转移!

谢谢大家!

1 个答案:

答案 0 :(得分:1)

首先,Component元素不能包含属性。 Component可以从文件加载,也可以以声明方式定义,在后一种情况下,它们只能包含一个根元素和一个id。

第二 - 你不能在元素的主体中进行赋值,只能在绑定中进行赋值。

第三 - 您不能从外部引用组件内部元素内定义的属性,因为该对象在实例化组件之前不存在。这些对象只能从内部引用。

除此之外,它将按预期工作,如果您可以引用它,您可以绑定或将其分配给属性,具体取决于您的需要。

所以你可以简单地将字符串属性设为external:

  property string stringIneedToPass: "Hello"

  Component {
    id: component1
    Text {
      text: stringIneedToPass
    }
  }

  Component {
    id: component2
    Rectangle {
      id: myRectangle
      property string stringIneedToReceive: stringIneedToPass
    }
  }