为什么我的QML属性在绑定到Slider.value属性时不会更新?

时间:2012-11-30 16:24:39

标签: qml blackberry-10 blackberry-cascades

我有一个QML文档,其中包含int propertySliderButton。我希望x始终与Slider.value具有相同的值。这是我的QML:

Page {
    property int x: 1

    content: Container {
        Slider {
            fromValue: 1
            toValue: 500
            value: x
            onValueChanged: {
                console.log("Slider value is: "+value);
                console.log("x value: "+x);  
            }
        }
        Button {
            text: "Increment x"
            onClicked: {
                x=x+10;
            }
        }
    }
}

当我按下按钮时,滑块值会更新并更新x。但是当我移动滑块时,x的值不会更新。移动滑块时,为什么x的值不会改变?

3 个答案:

答案 0 :(得分:4)

因为x未与Slider.value绑定。当您将Slider.value绑定到x时,如果x更改,Slider.value也会更改但如果Slider.value更改(当您滑动时),x }值不会改变。

要解决此问题,您可以使用alias类型

property alias x: slider.value // assume the Slider has a id of "slider"

答案 1 :(得分:2)

试试这个:

Page {
property int x: **sliderID.value**

content: Container {
    Slider {
        **id: sliderID**
        fromValue: 1
        toValue: 500
        value: x
        onValueChanged: {
            console.log("Slider value is: "+value);
            console.log("x value: "+x);  
        }
    }
    Button {
        text: "Increment x"
        onClicked: {
            x=x+10;
        }
    }
}

}

我建立了双向绑定。

答案 2 :(得分:1)

使用onImmediateValueChanged信号而不是onValueChanged

...
onImmediateValueChanged: {
    console.log("Slider value is: "+value);
    console.log("x value: "+x);  
}
...