重复绑定
此警告类别有多个警告
属性上重复拦截器
发生了什么?
一个属性有多个拦截器。
为什么这是不好的?
在同一个属性上设置多个拦截器不受 QML 引擎支持。
示例
让我们在同一属性上将Behavior作为拦截器使用两次
import QtQuick Rectangle { Behavior on width { NumberAnimation { duration: 1000 } } Behavior on width { // not ok: Duplicate interceptor on property "width" [duplicate-property-binding] NumberAnimation { duration: 2000 } } }
您可以通过删除所有Behavior除了一个来解决这个警告
import QtQuick Rectangle { Behavior on width { NumberAnimation { duration: 2000 } } }
有关更多信息,请参阅 属性修改器类型。
属性上重复值源
发生了什么?
一个属性有多个值源。
为什么这是不好的?
当组合值源时,将显示意外的行为。请参见下面的示例。
示例
让我们在同一属性上将NumberAnimation作为值源使用两次
import QtQuick Rectangle { NumberAnimation on x { to: 50; duration: 1000 } NumberAnimation on x { to: 10; duration: 100 } // not ok: Duplicate value source on property "x" [duplicate-property-binding] onXChanged: console.log(x) }
如果您检查该程序的结果,您将看到两个NumberAnimation将相互交错,这可能是预期之外的效果。您可以通过删除所有NumberAnimation除了一个来解决这个警告
import QtQuick Rectangle { NumberAnimation on x { to: 50; duration: 1000 } }
无法组合值源和绑定
发生了什么?
一个属性在同一个属性上有值源和绑定。
为什么这是不好的?
绑定将在值源开始更新该属性之前更新属性的值。这可能会导致意外的行为,并更难阅读。
示例
让我们在同一属性上将NumberAnimation作为值源
import QtQuick Rectangle { NumberAnimation on x { to: 50; duration: 1000 } // not ok: Cannot combine value source and binding on property "x" [duplicate-property-binding] x: 55 onXChanged: console.log(x) }
如果您检查该程序的结果,您将看到NumberAnimation将从 55 动画到 50,以下代码将更容易阅读
import QtQuick Rectangle { NumberAnimation on x { from: 55; to: 50; duration: 1000 } // ok: intentions are clearer now! }
© 2024 Qt有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会发布的GNU 公共文档许可证版本 1.3 的条款进行许可。Qt及其相关标志是芬兰的 Qt有限公司及其它国家/地区的商标。所有其他商标均属于其各自所有者。