Qt 水平滑块禁用鼠标滚轮

img


如何禁止鼠标滚轮在slider上的作用,试了好多方法都没用。QT5.9.9

在QT5.9.9中,禁止鼠标滚轮在slider上的作用可以通过重载Slider控件的wheelEvent方法来实现。具体的步骤如下:

创建一个自定义的Slider类,继承自QSlider类。例如:

class CustomSlider : public QSlider
{
public:
    CustomSlider(QWidget *parent = 0);
protected:
    virtual void wheelEvent(QWheelEvent *event) override;
};

在CustomSlider类中重载wheelEvent方法,通过判断鼠标事件是否在slider上来禁止鼠标滚轮的作用。例如:

void CustomSlider::wheelEvent(QWheelEvent *event)
{
    QPoint pos = event->pos();
    QRect rect = this->rect();
    if (rect.contains(pos)) {
        event->ignore();
    } else {
        QSlider::wheelEvent(event);
    }
}

在这个示例中,我们获取鼠标事件的位置并将其与Slider控件的矩形区域进行比较。如果鼠标事件在Slider上,则忽略滚轮事件,否则调用基类的wheelEvent方法处理滚轮事件。

在应用程序中使用自定义的Slider类替换QSlider控件,例如:

CustomSlider *slider = new CustomSlider(parent);

通过这种方法,您可以禁止鼠标滚轮在Slider控件上的作用.

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

直接隐藏掉,或者试试用事件过滤器来处理
https://blog.csdn.net/weixin_43807244/article/details/119991752?spm=1001.2014.3001.5502