我有QListWidget
一些内容和活动滚动条。我想在它之前收到它的轮子事件,以便我可以根据需要做一些事情。我尝试在上面实现eventFilter
和安装它QListWidget
,但无济于事:如果它没有被滚动区域消耗,我只会收到所需的事件,即,如果它已经在鼠标滚轮旋转方向上滚动到它的极限。
我做错什么了吗?还是我应该做其他事情来正确拦截事件?
我有QListWidget
一些内容和活动滚动条。我想在它之前收到它的轮子事件,以便我可以根据需要做一些事情。我尝试在上面实现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 ) [信号] 当sliderDown 为真且滑块移动时发出此信号。这通常发生在用户拖动滑块时。该值是新的滑块位置。即使在跟踪关闭时也会发出此信号。另请参见 setTracking()、valueChanged()、isSliderDown()、sliderPressed() 和 sliderReleased()。