【发布时间】:2018-08-14 05:55:58
【问题描述】:
我想根据属性的集合大小自动显示/隐藏视图,代码如下:
QtObject {
property var controlWindow: Window {
property var collection: []
signal sigAddElement(var element)
onSigAddElement: {
collection.push(element)
}
signal sigEraseAllElements()
onSigEraseAllElements: {
collection.length = 0
}
onCollectionChanged: {
console.log("collection.len = " + collection.length)
}
Rectangle {
id: autoHidableView
visible: collection.length != 0
}
}
}
但是autoHidableView 的visible 属性在启动时只评估一次,并且不再评估onCollectionChanged 处理程序永远不会被调用,这是可以理解的,因为集合对象本身保持不变
那么是否可以监听集合的大小更改事件?
【问题讨论】:
-
我在
visible的visible属性上收到collection is not defined的警告@,所以这可能是它不起作用的原因。另外,你为什么把它包装在一个 QtObject 中? -
@Amfasis,这是一个遗留代码,我删除了所有不相关的部分,但我不确定
QtObject和Window是否相关,所以我保存了它们。您是否弄清楚为什么会收到undefined警告? -
我没有查看
undefined,但在引用controlWindow.collection.count时可能会起作用? -
@Amfasis,这只是一个模拟代码,不需要它是可编译的。但这个错误似乎很有趣:)