Qt 如何应对儿童可见度的变化?

Qt 如何应对儿童可见度的变化?,qt,qml,qquickitem,Qt,Qml,Qquickitem,我有不同的容器项目,我想使不可见时,他们的所有孩子都不可见 动态地,一些代码递归地解析所有项目,并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此筛选将忽略容器项 过滤之后,如何检测可见性已更改并相应地更新容器项目 到目前为止,我有这段代码,但我需要在每次更改子可见性时执行这段代码: visible: visibleChildren.size > 0 请尝试以下方法: visible: visibleChildren.length > 0 事实上,只有可见:visible

我有不同的容器项目,我想使不可见时,他们的所有孩子都不可见

动态地,一些代码递归地解析所有项目,并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此筛选将忽略容器项

过滤之后,如何检测可见性已更改并相应地更新容器项目

到目前为止,我有这段代码,但我需要在每次更改子可见性时执行这段代码:

visible: visibleChildren.size > 0
请尝试以下方法:

visible: visibleChildren.length > 0
事实上,只有
可见:visibleChildren.length
也可以

visibleChildren.size
未定义的
-没有
size
成员

请记住,根据以下代码的行为判断,将项目设置回可见状态将出现问题:

  MouseArea {
    anchors.fill: parent
    onClicked: inner.visible = !inner.visible
  }

  Rectangle {
    id: outer
    anchors.fill: parent
    color: "blue"
    visible: visibleChildren.length
    Rectangle {
      id: inner
      width: 50
      height: 50      
      color: "red"
    }
  }
一旦父项不可见,内部项的可见性始终为false,即使显式设置为true

如果父项不可见,则无法将子项设置为可见,因此一旦
visibleChildren
为空,就无法通过将子项设置为可见来填充它。当父对象不可见时,不能将子对象设置为可见;如果没有可见的子对象,则父对象不可见

因此,如果这种行为是您的需求,那么您必须实现一些其他可见性跟踪机制,而不是使用
visibleChildren