2025-09-25 16:56:53 +08:00
|
|
|
|
#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);
|
|
|
|
|
|
|
2025-09-25 23:53:23 +08:00
|
|
|
|
emit SigCustomSliderValueChanged(this->value());
|
2025-09-25 16:56:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
|
}
|