QML属性绑定取决于同一组件中的其他绑定

问题描述:

假设我有一个QtObject,它有一些属性。有没有用在其他在同一QtObject结合一个有约束力的任何缺点:QML属性绑定取决于同一组件中的其他绑定

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文档评估的顺序是不确定的。

订单完全未定义是不正确的。绑定以依赖关系定义的顺序进行评估。对于任何dependant-dependency对,保证在dependant之前评估dependency方。因此,每isSomething财产被评估/更新它依赖haveMyObject已被评估/更新。

+0

我明白了,这是一个非常有用的信息,谢谢。你也可以提供一个链接,也有这个信息? – Silex

+0

@Silex试想一下另一种方法,然后再考虑是否有其他方法可行。 –

+0

有道理,谢谢! – Silex