Restricting app slider values

18 visualizaciones (últimos 30 días)
Harpreet
Harpreet el 12 de Dic. de 2022
Comentada: Cris LaPierre el 14 de Dic. de 2022
Is there a way to restrict the values a slider in an app can take? I want to define an array of increasing numbers and have that be all the values the slider is allowed to take as I move it and NOT take on any other values. So for example if the first two values in my array are 1.23 and 2.45, I want the slider two start at 1.23 and when I move it to the right, it should go to 2.45 and NOT 1.4 or anything like that.
Thanks in advance!

Respuesta aceptada

Cris LaPierre
Cris LaPierre el 12 de Dic. de 2022
Editada: Cris LaPierre el 12 de Dic. de 2022
Is the spacing between values uniform? If so, you can set the step property.
If not, I think you would have to have your callback function process the slider value and set it to the predetermined value that is closest.
% Assume this is the slider value
value = 2.1;
% Assume this is the list of values you want the slider to take
myVals = [1.23 2.45 3.76 4.01];
% find the closest value
[~,ind] = min(abs(myVals-value))
ind = 2
valAct = myVals(ind)
valAct = 2.4500
Once you have identified the predefind value to use, set the slider's value property to that value.
app.Slder.Value = valAct;
I wrote the code the way I did so that it will execute here. You will of course need to adapt it to work within your app.
  3 comentarios
Harpreet
Harpreet el 13 de Dic. de 2022
Would you know if there is a way to set the step size of it using uislider instead of uicontrol, given the spacing is uniform?
Cris LaPierre
Cris LaPierre el 14 de Dic. de 2022
Sorry for the confusion. Only sliders in live tasks have a step property. So a uislider has the same properties as the slider component in an app.
If you want to only display accepted values on the tick labels, I would probably just programmatically set the slider ticks in a startupFcn. Note that a slider does not snap to the ticks. The previous answer I shared could be used for that purpose.
% Code that executes after component creation
function startupFcn(app)
app.Slider.MajorTicks = 1.23:1.22:15;
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Develop Apps Using App Designer en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by