QWheelEvent Class

QWheelEventクラスは、ホイールイベントを記述するパラメータを含んでいます。詳細...

ヘッダー #include <QWheelEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
継承: QSinglePointEvent

パブリック関数

QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())
QPoint angleDelta() const
bool inverted() const
Qt::ScrollPhase phase() const
QPoint pixelDelta() const

再実装パブリック関数

virtual bool isBeginEvent() const override
virtual bool isEndEvent() const override
virtual bool isUpdateEvent() const override

詳細説明

ホイールイベントは、マウスカーソルの下にあるウィジェットに送られますが、そのウィジェットがイベントを処理しない場合は、フォーカスウィジェットに送られます。ホイールイベントは、マウスホイールとトラックパッドのスクロールジェスチャの両方に対して生成されます。ホイール・イベントのデルタを読み取るには、2つの方法があります:angleDelta() は、ホイールの度数でデルタを返します。これらの値は常に提供されます。pixelDelta() はスクリーン・ピクセル単位でデルタを返し、macOSのような高解像度のトラックパッドを持つプラットフォームで利用できます。その場合、device()->type()はQInputDevice::DeviceType::Touchpadを返します。

関数position() とglobalPosition() は、イベント発生時のマウスカーソルの位置を返します。

ホイールイベントには、受信者がそのイベントを望んでいるかどうかを示す特別なacceptフラグが含まれています。ホイール・イベントを処理しない場合は、ignore() を呼び出す必要があります。これにより、親ウィジェットに確実に送信されます。

QWidget::setEnabled() 関数を使用すると、ウィジェットのマウス・イベントとキーボード・イベントを有効または無効にできます。

イベント・ハンドラQWidget::wheelEvent() は、ホイール・イベントを受け取ります。

QMouseEvent およびQWidget::grabMouse()も参照

メンバ関数ドキュメント

QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())

ホイール・イベント・オブジェクトを構築する。

pos はウィンドウ内のマウスカーソルの位置を提供する。グローバル座標での位置はglobalPos で指定されます。

pixelDelta angleDelta pixelDelta はオプションで、NULLにすることもできる。

イベント発生時のマウスとキーボードの状態は、buttonsmodifiers で指定される。

イベントのスクロールフェーズはphase で指定され、source は、これが本物のイベントか人工(合成)イベントかを示す。

システムが、(macOSのタッチパッドの自然なスクロールのように)イ ベントで配信されるデルタ値を反転するように設定されている場合、invertedtrue であるべきである。そうでない場合は、invertedfalse

ホイールイベントが発生したデバイスは、device で指定される。

position()、globalPosition()、angleDelta()、pixelDelta()、phase()、inverted()、device()も参照のこと

QPoint QWheelEvent::angleDelta() const

ホイールが回転された相対量を8分の1度単位で返します。正の値は、ホイールがユーザーから遠ざかる方向に回転されたことを示し、負の値は、ホイールがユーザーに向かって逆方向に回転されたことを示す。angleDelta().y() は、前のイベント以降に一般的な垂直方向のマウスホイールが回転された角度を提供する。angleDelta().x() は、マウスに水平方向のホイールがある場合、水平方向のマウスホイールが回転された角度を提供する。それ以外の場合はゼロのままである。angleDelta().x()一部のマウスでは、ユーザーがホイールを傾けて水平スクロー ルを行うことができ、一部のタッチパッドは水平スクロールジェスチャをサ ポートしている。

この場合、デルタ値は120の倍数になります。つまり、120単位 * 1/8 = 15度です。

しかし、一部のマウスはより細かい解像度のホイールを持ち、120単位より小さい(15度より小さい)デルタ値を送信します。この可能性をサポートするには、120の値に達するまでイベントからのデルタ値を累積的に加算してからウィジェットをスクロールするか、各ホイールイベントに応答してウィジェットを部分的にスクロールします。しかし、よりネイティブな感触を提供するために、pixelDelta() が利用可能なプラットフォームでは、 () を使用することをお勧めします。

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;

    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }

    event->accept();
}

注意: スクロールをサポートするプラットフォームでは、phases 、デルタがNULLになる場合があります:

  • スクロールが始まろうとしているが、距離がまだ変化していない (Qt::ScrollBegin)、
  • または、スクロールが終了し、距離が変化しなかった場合 (Qt::ScrollEnd)。

注: プロパティ angleDelta のゲッター関数。

pixelDelta()も参照

bool QWheelEvent::inverted() const

イベントとともに配信されるデルタ値が反転しているかどうかを返す。

通常、垂直ホイールは、ホイールの上部がそれを操作する手から離れるように回転している場合、正のデルタ値を持つQWheelEvent 。同様に、水平方向のホイールの動きは、ホイールの上部が左に移動している場合、正のデルタ値を持つQWheelEvent を生成する。

ただし、一部のプラットフォームでは、上記と同じ操作で負のデルタ値(ただし大きさは同じ)を生成するように、これを設定できます。invertedプロパティを使用すると、ホイール・イベント・コンシューマは、システム設定に関係なく、常にホイールの方向に従うことを選択できます。(このようなユースケースの1つは、ビジュアルタンブラーが回転するのと同じ方向に、ユーザがホイールを回転させる場合です。もう1つの使用例は、システム設定に関係なく、タッチパッド上の指の移動方向にスライダーハンドルを追従させることです)。

注意: 多くのプラットフォームはそのような情報を提供しません。そのようなプラットフォームでは、invertedは常にfalseを返します。

: inverted プロパティのゲッター関数。

[override virtual] bool QWheelEvent::isBeginEvent() const

再実装:QSinglePointEvent::isBeginEvent() const.

このイベントのphase() がQt::ScrollBegin の場合にtrue を返す。

[override virtual] bool QWheelEvent::isEndEvent() const

再実装:QSinglePointEvent::isEndEvent() const.

このイベントのphase() がQt::ScrollEnd の場合にtrue を返す。

[override virtual] bool QWheelEvent::isUpdateEvent() const

再実装:QSinglePointEvent::isUpdateEvent() const.

このイベントのphase() がQt::ScrollUpdate またはQt::ScrollMomentum の場合にtrue を返す。

Qt::ScrollPhase QWheelEvent::phase() const

このホイールイベントのスクロールフェーズを返します。

注意: Qt::ScrollBegin およびQt::ScrollEnd フェーズは、現在 macOS でのみサポートされています。

メモ : プロパティフェーズのゲッター関数です。

QPoint QWheelEvent::pixelDelta() const

画面上のスクロール距離をピクセル単位で返します。この値は、macOS などの高解像度ピクセルベースの差分値をサポートするプラットフォームで提供されます。この値は、画面上のコンテンツをスクロールする際に直接使用する必要があります。

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;

    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }

    event->accept();
}

注意: phases スクロールをサポートするプラットフォームでは、次のような場合にデルタがNULLになることがある:

  • スクロールが始まろうとしているが、距離がまだ変化していない (Qt::ScrollBegin)、
  • または、スクロールが終了し、距離が変化しなくなった場合(Qt::ScrollEnd)。

注: X11では、この値はドライバ固有のものであり、信頼できませんので、代わりにangleDelta() を使用してください。

注: プロパティ pixelDelta のゲッター関数。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.