我有一個QListWidget
,其中包含一些內容和活動滾動條。我希望在它之前收到它的輪子事件,以便我可以根據需要做一些事情。我嘗試執行eventFilter
並將其安裝在上述QListWidget
上,但無濟於事:我只收到期望的事件,如果它沒有被滾動區域消耗,即,如果它已經在鼠標滾輪旋轉的方向上滾動到其極限。使用滾動條攔截QListWidget的鼠標滾輪事件
我做錯了什麼?或者我應該採取其他措施來正確攔截事件?
我有一個QListWidget
,其中包含一些內容和活動滾動條。我希望在它之前收到它的輪子事件,以便我可以根據需要做一些事情。我嘗試執行eventFilter
並將其安裝在上述QListWidget
上,但無濟於事:我只收到期望的事件,如果它沒有被滾動區域消耗,即,如果它已經在鼠標滾輪旋轉的方向上滾動到其極限。使用滾動條攔截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.
}
小心事件 - > isAccepted( )狀態。
而且可以連接到滾動條(QAbstractSlider)槽:
空隙QAbstractSlider :: sliderMoved(int值)[信號]該信號 當sliderDown爲真並且滑塊移動被髮射。當用戶拖動滑塊時,通常會發生 。該值是新的 滑塊位置。即使關閉跟蹤 ,也會發出此信號。另請參見setTracking(),valueChanged(),isSliderDown(), sliderPressed()和sliderReleased()。
您可以嘗試重新實現QApplication :: notify方法,因爲在從系統到QObject的任何事件都會實現之前,它會變成這個方法。另外QEvent ::自發地告訴你,這個事件變成了操作系統。 – Milovidov