2

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

我做错什么了吗?还是我应该做其他事情来正确拦截事件?

4

1 回答 1

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 ) [信号] 当sliderDown 为真且滑块移动时发出此信号。这通常发生在用户拖动滑块时。该值是新的滑块位置。即使在跟踪关闭时也会发出此信号。另请参见 setTracking()、valueChanged()、isSliderDown()、sliderPressed() 和 sliderReleased()。

于 2013-03-07T12:33:04.507 回答