我有一个QML文档,其中包含int property
,Slider
和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
的值不会改变?
答案 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);
}
...