implement QAbstractSlider behavior

This commit is contained in:
laserpants 2016-05-04 22:26:19 +03:00
parent 6b354ecd04
commit 55ee28ff97
2 changed files with 7 additions and 19 deletions

View File

@ -27,8 +27,6 @@ void Slider::handleAction(int action)
if ((SliderPageStepAdd == action && sliderPosition() > d->stepTo) || if ((SliderPageStepAdd == action && sliderPosition() > d->stepTo) ||
(SliderPageStepSub == action && sliderPosition() < d->stepTo)) (SliderPageStepSub == action && sliderPosition() < d->stepTo))
{ {
d->step = false;
setRepeatAction(SliderNoAction);
setSliderPosition(d->stepTo); setSliderPosition(d->stepTo);
} }
} }
@ -63,12 +61,10 @@ void Slider::mouseMoveEvent(QMouseEvent *event)
{ {
Q_D(Slider); Q_D(Slider);
if (d->slide) if (isSliderDown()) {
{
setSliderPosition(d->valueFromPosition(event->pos())); setSliderPosition(d->valueFromPosition(event->pos()));
} } else {
else
{
QRect track(d->trackGeometry().adjusted(-2, -2, 2, 2)); QRect track(d->trackGeometry().adjusted(-2, -2, 2, 2));
if (track.contains(event->pos()) != d->hoverTrack) { if (track.contains(event->pos()) != d->hoverTrack) {
@ -98,7 +94,7 @@ void Slider::mousePressEvent(QMouseEvent *event)
thumb.moveCenter(d->thumbGeometry().center()); thumb.moveCenter(d->thumbGeometry().center());
if (thumb.contains(pos)) { if (thumb.contains(pos)) {
d->slide = true; setSliderDown(true);
return; return;
} }
@ -121,13 +117,11 @@ void Slider::mouseReleaseEvent(QMouseEvent *event)
{ {
Q_D(Slider); Q_D(Slider);
if (d->slide) { if (isSliderDown()) {
d->slide = false; setSliderDown(false);
setValue(sliderPosition());
return QAbstractSlider::mouseReleaseEvent(event);
} else if (d->step) { } else if (d->step) {
d->step = false; d->step = false;
setRepeatAction(SliderNoAction); setRepeatAction(SliderNoAction, 0);
} }
QAbstractSlider::mouseReleaseEvent(event); QAbstractSlider::mouseReleaseEvent(event);

View File

@ -17,7 +17,6 @@ public:
: q_ptr(parent), : q_ptr(parent),
hoverTrack(false), hoverTrack(false),
hoverThumb(false), hoverThumb(false),
slide(false),
step(false), step(false),
stepTo(0) stepTo(0)
{ {
@ -37,8 +36,6 @@ public:
void paintTrack(QPainter *painter) void paintTrack(QPainter *painter)
{ {
Q_Q(Slider);
painter->save(); painter->save();
QBrush brush; QBrush brush;
@ -83,8 +80,6 @@ public:
void paintThumb(QPainter *painter) void paintThumb(QPainter *painter)
{ {
Q_Q(Slider);
painter->save(); painter->save();
QBrush brush; QBrush brush;
@ -135,7 +130,6 @@ public:
bool hoverTrack; bool hoverTrack;
bool hoverThumb; bool hoverThumb;
bool slide;
bool step; bool step;
int stepTo; int stepTo;
}; };