我有QListWidget
一些内容和活动滚动条。我希望在它之前接收它的轮子事件,以便我可以根据需要做一些事情。我尝试实现eventFilter
并将其安装在所述QListWidget
上,但无济于事:如果滚动区域没有消耗,我只会收到所需的事件,i。例如,如果它已经在鼠标滚轮旋转方向上滚动到极限。
我做错了什么吗?或者我应该采取其他措施来正确拦截事件?
答案 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()。