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 ) [signal] このシグナルは、sliderDown が true で、スライダーが移動したときに発生します。これは通常、ユーザーがスライダーをドラッグしているときに発生します。値は新しいスライダーの位置です。この信号は、トラッキングがオフになっている場合でも送信されます。setTracking()、valueChanged()、isSliderDown()、sliderPressed()、およびsliderReleased()も参照してください。

于 2013-03-07T12:33:04.507 に答える