2

我有一个 QML 文档,其中包含int property、 aSlider和 a Button。我希望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当我移动滑块时值没有变化?

4

3 回答 3

4

因为你x没有绑定到Slider.value. 当你绑定Slider.value到 时x,如果x改变,Slider.value也会改变但是如果Slider.value改变(当你滑动它时),x值不会改变。

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

property alias x: slider.value // assume the Slider has a id of "slider"
于 2012-12-01T15:08:30.597 回答
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;
        }
    }
}

}

我建立了双向绑定。

于 2012-11-30T16:36:48.650 回答
1

使用 onImmediateValueChanged 信号而不是 onValueChanged

...
onImmediateValueChanged: {
    console.log("Slider value is: "+value);
    console.log("x value: "+x);  
}
...
于 2012-12-02T13:20:38.213 回答