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

View File

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