2

int property、 a 、Sliderおよび aを含む QML ドキュメントがあり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.valuex、変更された場合xSlider.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

onValueChanged の代わりに onImmediateValueChanged シグナルを使用する

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