基于条件

时间:2018-02-16 17:36:59

标签: qt qml qt-quick

如何在基于条件创建QML组件时动态地定义父项?

示例:

// FirstFile.qml

SecondFile{

  Rectangle {
    id: bodyRect

  }    
}

// SecondFile.qml

Rectangle{
  id: rectangleId

  Flickable{
    id: flickableId

  }    
}

在此示例中,bodyRect的父级为rectangleId

如果条件为真,如何将flickableId归为bodyRect的父级?

1 个答案:

答案 0 :(得分:1)

嗯,这实际上取决于你实际想要达到的目标,而现在的问题完全不清楚。

如果使用动态对象实例化,则只需将所需的父级传递给函数:

someComponent.createObject(condition ? parent1 : parent2)

此外,您可以根据条件更改对象的可视父级:

  property bool cond: false

  property Rectangle rect: Rectangle {
    Rectangle {
      parent: cond ? redrect : bluerect
      anchors.centerIn: parent
      width: 50
      height: 50
      color: "blue"
    }
  }

  MouseArea {
    anchors.fill: parent
    onClicked: cond = !cond
  }

  Row {
    Rectangle {
      id: redrect
      width: 200
      height: 200
      color: "red"
    }
    Rectangle {
      id: bluerect
      width: 200
      height: 200
      color: "green"
    }
  }

cond发生变化时,蓝色矩形将动态地重新定位到红色或绿色矩形。

请记住,除非对象碰巧代表在对象树中具有可见性的实际实例,否则您无法在不同文件中执行任何操作。