飞鸿剑心 |
2017-06-09 10:59 |
这都要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 重写此函数,最后的信号是我自己定义的,可用可不用
|
|