我有几个状态,仅用于更改某些属性:

Item { 
    id: props 
    property int someProperty: 0 
    // ... 
 
    states: [ 
        State { 
            name: "firstState" 
            PropertyChange { 
                target: props 
                someProperty: 1 
                // ... 
            } 
        }, 
        State { 
            name: "secondState" 
            PropertyChange { 
                target: props 
                someProperty: 1 
                // ... 
            } 
        } 
    ] 
    onStateChange: doSomething(someProperty) 
} 

由于不同的状态对于 someProperty 可能具有相同的值我不能依赖 somePropertyChange信号,但我什至不能依赖 onStateChange (如示例中所示),因为当它运行时,属性没有改变。

那我怎么能跑 doSomething()每次状态改变?用 QML 有更好的方法来做这种事情?

请您参考如下方法:

您可以使用 StateChangeScript 运行一些脚本.

Item { 
    id: props 
    property int someProperty: 0 
 
    states: [ 
        State { 
            name: "firstState" 
            PropertyChanges { 
                target: props 
                someProperty: 1 
            } 
            StateChangeScript { 
                name: "firstScript" 
                script: console.log("entering first state") 
            } 
        }, 
        State { 
            name: "secondState" 
            PropertyChanges { 
                target: props 
                someProperty: 1 
            } 
            StateChangeScript { 
                name: "secondScript" 
                script: console.log("entering second state") 
            } 
        } 
    ] 
} 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!