【问题标题】:QML property binding depending on an other binding in the same componentQML 属性绑定取决于同一组件中的其他绑定
【发布时间】:2016-07-28 13:11:20
【问题描述】:

假设我有一个QtObject,它有一些属性。在同一个QtObject 中使用其他绑定中的绑定是否有任何缺点:

QtObject {
    // This is set by the caller
    property var myObject

    readonly property bool haveMyObject: myObject ? true :  false
    readonly property bool isSomething1: haveMyObject ? myObject.isSomething1 :  false
    readonly property bool isSomething2: haveMyObject ? myObject.isSomething2 :  false
    readonly property bool isSomething3: haveMyObject ? myObject.isSomething3 :  false
    readonly property bool isSomething4: haveMyObject ? myObject.isSomething4 :  false
    readonly property bool isSomething5: haveMyObject ? myObject.isSomething5 :  false
}

而不是这个:

QtObject {
    // This is set by the caller
    property var myObject

    readonly property bool haveMyObject: myObject ? true :  false
    readonly property bool isSomething1: myObject ? myObject.isSomething1 :  false
    readonly property bool isSomething2: myObject ? myObject.isSomething2 :  false
    readonly property bool isSomething3: myObject ? myObject.isSomething3 :  false
    readonly property bool isSomething4: myObject ? myObject.isSomething4 :  false
    readonly property bool isSomething5: myObject ? myObject.isSomething5 :  false
}

哪一个更可取?我问的原因是因为 Qt 文档的评估顺序是未定义的。

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    订单完全未定义是不正确的。绑定按其依赖关系定义的顺序进行评估。对于任何dependant-dependency 对,保证dependency 端在dependant 之前评估。因此,每个isSomething 属性都会在它的依赖项haveMyObject 被评估/更新之后进行评估/更新。

    【讨论】:

    • 我明白了,这是一个非常有用的信息,谢谢。您能否也提供一个包含此信息的链接?
    • @Silex 想象一下替代方案,然后想一想如果替代方案为真,是否可行。
    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2011-01-10
    相关资源
    最近更新 更多