为什么我的 QML 属性绑定到 Slider.value 属性时没有更新?

问题描述 投票:0回答:3

我有一个 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
的值没有改变?

qml blackberry-10 blackberry-cascades
3个回答
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"

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;
        }
    }
}

}

我建立了双向绑定。


1
投票

使用 onImmediateValueChanged 信号而不是 onValueChanged

...
onImmediateValueChanged: {
    console.log("Slider value is: "+value);
    console.log("x value: "+x);  
}
...
© www.soinside.com 2019 - 2024. All rights reserved.