在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); } };