在Qt中Qslider的单击会移动一个step,这里需要禁用跳转,保留拖动,重写QSlider mousePressEvent函数。
class MySlider : public QSlider {
public:
explicit MySlider(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event) {
//获取点击触发前的值
const int value = this->value();
//调用父类的鼠标点击处理事件
QSlider::mousePressEvent(event);
setValue(value);
//向父窗口发送自定义事件event type,这样就可以在父窗口中捕获这个事件进行处理
QEvent evEvent(static_cast<QEvent::Type>(QEvent::User + 1));
QCoreApplication::sendEvent(parentWidget(), &evEvent);
}
};