拦截带有滚动条的QListWidget的鼠标滚轮事件



我有一个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()

相关内容

  • 没有找到相关文章

最新更新