这都要5分,我把我的实现发上来吧,其实就是前面说的实现重写mouseMoveEvent
void MySlider::mousePressEvent(QMouseEvent *ev)
{
//注意应先调用父类的鼠标点击处理事件,这样可以不影响拖动的情况
QSlider::mousePressEvent(ev);
//获取鼠标的位置,这里并不能直接从ev中取值(因为如果是拖动的话,鼠标开始点击的位置没有意义了)
if(this->orientation() == Qt::Horizontal)
{
double pos = ev->pos().x() / (double)width();
setValue(pos * (maximum() - minimum()) + minimum());
// qDebug() << "pos * (maximum() - minimum()) + minimum()" << pos * (maximum() - minimum()) + minimum();
}else
{
double pos = ev->pos().y() / (double)height();
setValue((1-pos) * (maximum() - minimum()) + minimum());
}
emit sliderValueChange();
}
说明:继承QSlider 重写此函数,最后的信号是我自己定义的,可用可不用