我有一个 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
的值没有改变?
因为你的
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"
试试这个:
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;
}
}
}
}
我建立了双向绑定。
使用 onImmediateValueChanged 信号而不是 onValueChanged
...
onImmediateValueChanged: {
console.log("Slider value is: "+value);
console.log("x value: "+x);
}
...