如何应对儿童知名度的变化?

时间:2018-02-08 10:11:36

标签: qt qml qquickitem

我有不同的容器物品,并且当他们的所有孩子都不可见时我想看不见。

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

在过滤后,如何检测可见性已更改并相应更新我的容器项?

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

public function showapi()
{
    WordResource::withoutWrapping();
    return new WordResource(Word::all());
}

1 个答案:

答案 0 :(得分:2)

请改为尝试:

visible: visibleChildren.length > 0

事实上,只有visible: visibleChildren.length也可以。

visibleChildren.sizeundefined - 没有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"
    }
  }

一旦父项变得不可见,即使明确设置为true,内部项的可见性也始终为false。

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

因此,如果您需要这种行为,则必须实施其他可见性跟踪机制,而不是使用visibleChildren