QSlider 在点击非滑块部分时,不会直接到点击位置,而是一步一步执行,在项目中使用时会感觉不流畅。可以通过改变QSlider的鼠标点击事件(mousePressEvent)和鼠标移动事件(mouseMoveEvent)解决。
使用原QSlider
如UI中使用verticalSlider,MySliderUI.h 头文件:
class MySliderUI : public QWidget
{
Q_OBJECT
public:
explicit MySliderUI(QWidget *parent = 0);
~MySliderUI();
protected:
bool eventFilter(QObject *obj, QEvent *event);
private:
Ui::EpsSliderUI *ui;
};
MySliderUI.cpp
MySliderUI::MySliderUI(QWidget *parent) :
QWidget(parent)
{
ui->slider->installEventFilter(this);
}
添加事件过滤,对QSlider的事件重新处理。
bool MySliderUI::eventFilter(QObject *obj, QEvent *event)
{
if( obj == ui->slider)
{
if (event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(even