View Full Version : QSlider how to check if slider handle is selected

14th May 2014, 07:56

I am trying to get the slider handle to move only when it is selected and drag. I have subclass the QSlider class , re-implementing the mousePressEvent function.

In my mousePressEvent function.

if (d->pressedControl != QStyle::SC_SliderHandle)

I am unable to access d_func() as it is private , is there any work around so i am able to check if the selected object is the slider handle?

14th May 2014, 10:28
Why are you going so low level?
Why not just use sliderPressed() signal?
Or even better, sliderMoved()?

14th May 2014, 10:32
I don't think you can do that in a subclass.

What you could try it so overwrite sliderChange() and check for value changes.
If the slider is pressed at the time you allow it to pass, if not, you don't. The latter might require to reset the value

Other options are to modify the slider implementation in your copy of Qt or copy the slider implementation in to a new class and have it in a separate "addon" library


15th May 2014, 09:52
I am trying to get the slider handle to move only when it is selected and drag.
but isn't this the normal QSlider behavior?
From the docs for QAbstractSlider::sliderMoved ( int value ):

This signal is emitted when sliderDown is true and the slider moves. This usually happens when the user is dragging the slider. The value is the new slider position.

This signal is emitted even when tracking is turned off.

Otherwise, what exactly do you mean by "selected and drag"?