45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#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());
|
||
}
|