如何对 children 的可见性变化做出反应?
How to react on a change of visibility of children?
我有不同的容器项目,我想在所有 children 不可见时不可见。
动态地,一些代码递归地解析所有项目并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此过滤将忽略容器项。
过滤后,我如何检测可见性发生变化并相应地更新我的容器项目?
到目前为止我有这段代码,但我需要在每次 children 可见性更改时执行此代码:
visible: visibleChildren.size > 0
试试这个:
visible: visibleChildren.length > 0
事实上,只有 visible: visibleChildren.length
也可以。
visibleChildren.size
是 undefined
- 没有 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
。
我有不同的容器项目,我想在所有 children 不可见时不可见。
动态地,一些代码递归地解析所有项目并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此过滤将忽略容器项。
过滤后,我如何检测可见性发生变化并相应地更新我的容器项目?
到目前为止我有这段代码,但我需要在每次 children 可见性更改时执行此代码:
visible: visibleChildren.size > 0
试试这个:
visible: visibleChildren.length > 0
事实上,只有 visible: visibleChildren.length
也可以。
visibleChildren.size
是 undefined
- 没有 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
。