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