如何为Qt QML控件添加变更时不触发通知的属性以规避绑定循环
QML 无通知纯状态属性实现需求
在QML开发中,偶尔会遇到需要为控件添加无变更通知属性的场景:该属性值变更时不会向所有使用它的对象发送通知,也不会触发相关绑定表达式重新求值,仅作为纯状态变量使用,核心作用是避免触发绑定循环。
绑定循环问题示例
Item { property string state: "" visible: { if(some_condition) { state = "foo"; return true; } if(state === some_other_external_state) return true; state = ""; return false; } }
问题说明
上述示例中,当some_condition为true时,visible属性的绑定逻辑会对state赋值,而visible本身的求值又依赖state的值,因此会产生绑定循环。如果state属性不支持绑定、仅作为无通知的纯状态变量使用,就可以完全规避该循环问题。
内容的提问来源于stack exchange,提问作者Tim Angus
相关产品推荐
相关产品推荐

