[Interest] How to set QtQuickControls Slider to an initial value without modifying the current saved?

Bo Thorsen bo at vikingsoft.eu
Fri Oct 17 08:49:33 CEST 2014


Den 16-10-2014 17:39, Nuno Santos skrev:
> Hi,
>
> I’m using Slider from QtQuickControls and i’m facing a problem. I initialise the value with a value saved on settings. However, when the slider is instantiated, it is triggering onValueChanged with the default min value. The setting is being correctly saved because I don’t show the slider right away. Only when the slider is show, this is happening and I see the result of the change in settings.
>
> Slider {
>      width: parent.width
>      height: 10
>      minimumValue: 60
>      maximumValue: 180
>      stepSize: 1
>      updateValueWhileDragging: true
>      value: settings.trackWidth
>      onValueChanged: {
>          console.log("track width value changed: " + value)
>          settings.trackWidth = value
>      }
>      Component.onCompleted: {
>          console.log("track width on completed: " + settings.trackWidth)
>          value = settings.trackWidth
>      }
> }
>
> Console:
>
> qml: track width value changed: 60
> qml: track width on completed: 60

It's possible there is an elegant solution to this, but I haven't found 
it so far. What I do in cases like this is to set a boolean property 
initialised to false and set this to true in onCompleted after you set 
the value. In onValueChanged, you check if the bool is true before doing 
anything on the value.

Bo.

-- 
Viking Software
Qt and C++ developers for hire
http://www.vikingsoft.eu




More information about the Interest mailing list