默认情况下,QSlider 仅在光标位于鼠标滚轮上时才对鼠标滚轮做出反应。无论光标在哪里,我都想通过鼠标滚轮控制滑块(当然只有当我的应用程序有焦点时)。
实现这一目标的最佳方法是什么?
我刚刚了解到鼠标不会产生信号。所以看起来我需要在主窗口中覆盖 wheelEvent 并在其中使用 raise 或 lower 方法。但我猜想当鼠标悬停在滑块上时,它会导致滑块值的双倍递增(或递减)。
所以再一次:实现我所描述的最好方法是什么?
您可以覆盖 MainWindow 中的 wheelEvent() 并将其重定向到滑块控件,这确实是一种选择。
另一种选择是在 qApp 实例上安装事件过滤器。这个偶数过滤器然后可以检查事件类型是否为QEvent::Wheel,当接收者不是滑块时,再次将其重定向到滑块。应该也能正常工作。