使用滚动条拦截QListWidget的鼠标滚轮事件

时间:2013-01-20 21:36:27

标签: qt events event-handling mouseevent

我有QListWidget一些内容和活动滚动条。我希望在它之前接收它的轮子事件,以便我可以根据需要做一些事情。我尝试实现eventFilter并将其安装在所述QListWidget上,但无济于事:如果滚动区域没有消耗,我只会收到所需的事件,i。例如,如果它已经在鼠标滚轮旋转方向上滚动到极限。

我做错了什么吗?或者我应该采取其他措施来正确拦截事件?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你只需要从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()。