我有一个QListWidget
与一些内容和活动滚动条。我想在它之前接收它的wheel事件,这样我就可以在需要的时候做一些事情。我尝试实现eventFilter
并将其安装在上述QListWidget
上,但无济于事:我只收到所需的事件,如果它没有被滚动区域消耗,即,如果它已经在鼠标滚轮旋转的方向上滚动到极限。
我做错什么了吗?或者我应该做一些其他的事情来正确地拦截事件?
如果我理解正确,您只需要从QListWidget继承一些类并实现wheelEvent处理程序:
class EListWidget : public QListWidget
{
public:
EListWidget(QWidget *parent);
private:
virtual void wheelEvent(QWheelEvent *event);
};
…
void EListWidget::wheelEvent(QWheelEvent *event)
{
// to do any processing here if you want to do something before scrolling
// call base implementation
QListWidget::wheelEvent(event);
// to do some processing after scrolling.
}
注意event->isAccepted()状态
也可以连接到滚动条(QAbstractSlider)插槽:
void QAbstractSlider::sliderMoved (int value) [signal]此信号当sliderDown为true并且滑动条移动时发出。这通常当用户拖动滑块时发生。该值为新值滑块的位置。这个信号即使在跟踪被打开时也会发出掉了。参见setTracking(), valueChanged(), isSliderDown()sliderPressed()和sliderReleased()