如何对儿童可见度的变化做出反应?
Posted
技术标签:
【中文标题】如何对儿童可见度的变化做出反应?【英文标题】:How to react on a change of visibility of children? 【发布时间】:2018-02-08 10:11:35 【问题描述】:我有不同的容器项目,我想让它们的所有子项都不可见时不可见。
动态地,一些代码递归地解析所有项目,并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此过滤将忽略容器项。
过滤后,我如何检测可见性已更改并相应地更新我的容器项目?
到目前为止,我有这段代码,但每次更改子项的可见性时我都需要执行此代码:
visible: visibleChildren.size > 0
【问题讨论】:
【参考方案1】:试试这个:
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
。
【讨论】:
以上是关于如何对儿童可见度的变化做出反应?的主要内容,如果未能解决你的问题,请参考以下文章
如何对 UIView 上的自动布局约束引起的大小变化做出反应?
如何让 rhandsontable 对输入值的变化和自身的变化做出反应?
对于 iO,我有一个 if / else 代码块,对 UISwitch 中的变化做出反应。在某些情况下如何将 uiswitch 设置回关闭?