Files
gdmp/customslider.cpp

45 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "customslider.h"
#include "globalhelper.h"
CustomSlider::CustomSlider(QWidget *parent)
: QSlider(parent)
{
this->setMaximum(MAX_SLIDER_VALUE);
}
CustomSlider::~CustomSlider()
{
}
void CustomSlider::mousePressEvent(QMouseEvent *ev)
{
bIsPressed = true;
//注意应先调用父类的鼠标点击处理事件,这样可以不影响拖动的情况
QSlider::mousePressEvent(ev);
//获取鼠标的位置这里并不能直接从ev中取值因为如果是拖动的话鼠标开始点击的位置没有意义了
double pos = ev->pos().x() / (double)width();
setValue(pos * (maximum() - minimum()) + minimum());
emit SigCustomSliderValueChanged(this->value());
}
void CustomSlider::mouseReleaseEvent(QMouseEvent *ev)
{
bIsPressed = false;
QSlider::mouseReleaseEvent(ev);
emit SigCustomSliderValueChanged(this->value());
}
void CustomSlider::mouseMoveEvent(QMouseEvent *ev)
{
if (!bIsPressed)
return;
QSlider::mouseMoveEvent(ev);
//获取鼠标的位置这里并不能直接从ev中取值因为如果是拖动的话鼠标开始点击的位置没有意义了
double pos = ev->pos().x() / (double)width();
setValue(pos * (maximum() - minimum()) + minimum());
emit SigCustomSliderValueChanged(this->value());
}