QScroller Class

QScroller クラスは、スクロールウィジェットやグラフィックアイテムのキネティックスクロールを可能にします。詳細...

ヘッダ #include <QScroller>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承: QObject

パブリックな型

enum Input { InputPress, InputMove, InputRelease }
enum ScrollerGestureType { TouchGesture, LeftMouseButtonGesture, MiddleMouseButtonGesture, RightMouseButtonGesture }
enum State { Inactive, Pressed, Dragging, Scrolling }

プロパティ

パブリック機能

QPointF finalPosition() const
bool handleInput(QScroller::Input input, const QPointF &position, qint64 timestamp = 0)
QPointF pixelPerMeter() const
QScrollerProperties scrollerProperties() const
void setSnapPositionsX(const QList<qreal> &positions)
void setSnapPositionsX(qreal first, qreal interval)
void setSnapPositionsY(const QList<qreal> &positions)
void setSnapPositionsY(qreal first, qreal interval)
QScroller::State state() const
void stop()
QObject *target() const
QPointF velocity() const

パブリックスロット

void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)
void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)
void resendPrepareEvent()
void scrollTo(const QPointF &pos)
void scrollTo(const QPointF &pos, int scrollTime)
void setScrollerProperties(const QScrollerProperties &prop)

シグナル

void scrollerPropertiesChanged(const QScrollerProperties &newProperties)
void stateChanged(QScroller::State newState)

静的パブリックメンバ

QList<QScroller *> activeScrollers()
Qt::GestureType grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = TouchGesture)
Qt::GestureType grabbedGesture(QObject *target)
bool hasScroller(QObject *target)
QScroller *scroller(QObject *target)
const QScroller *scroller(const QObject *target)
void ungrabGesture(QObject *target)

詳しい説明

キネティック・スクロールでは、ユーザがウィジェットをある方向に押すと、ユーザか摩擦によって止められるまで、その方向にスクロールし続けます。直感的なユーザーエクスペリエンスを微調整するために、慣性、摩擦、その他の物理的概念を変更することができます。

QScrollerオブジェクトは、現在の位置とスクロールスピードを保存し、更新を行うオブジェクトである。QScrollerはフリックジェスチャーによってトリガーされる。

    QWidget *w = ...;
    QScroller::grabGesture(w, QScroller::LeftMouseButtonGesture);

によって、あるいはこのように直接トリガーすることができる:

    QWidget *w = ...;
    QScroller *scroller = QScroller::scroller(w);
    scroller->scrollTo(QPointF(100, 100));

スクロールされたQObjectは、スクローラーがジオメトリ情報を更新する必要があるときはいつでもQScrollPrepareEvent 、オブジェクトのコンテンツが実際にスクロールされる必要があるときはいつでもQScrollEvent

QScrollEventを生成するために、スクローラーはグローバルなQAbstractAnimation タイマーを使用します。これは、QScrollerProperties::FrameRate 、QScrollerごとに変更できます。

このキネティックスクローラーには、QScrollerProperties から利用可能な多数の設定がありますが、すべてデフォルトの、プラットフォームに最適化された値のままにしておくことをお勧めします。設定を変更する前に、scroller examples ディレクトリにあるplot サンプルで実験することができます。

QScrollEventQScrollPrepareEventQScrollerPropertiesも参照のこと

メンバー・タイプ・ドキュメント

enum QScroller::Input

この列挙型には、QScroller に関連する入力イベントの、入力デバイスに依存しないビューが含まれています。

定数説明
QScroller::InputPress1ユーザが入力デバイスを押した (例:QEvent::MouseButtonPress,QEvent::GraphicsSceneMousePress,QEvent::TouchBegin)
QScroller::InputMove2ユーザが入力デバイスを動かした (例:QEvent::MouseMove,QEvent::GraphicsSceneMouseMove,QEvent::TouchUpdate)
QScroller::InputRelease3ユーザーが入力デバイスを離した (例:QEvent::MouseButtonRelease,QEvent::GraphicsSceneMouseRelease,QEvent::TouchEnd)

enum QScroller::ScrollerGestureType

この列挙型には、QScroller ジェスチャー認識機能でサポートされるさまざまなジェスチャータイプが含まれます。

定数説明
QScroller::TouchGesture0ジェスチャ認識機能は、タッチイベントでのみトリガされます。具体的には、タッチスクリーンを使用している場合はシングル・タッチ・ポイント、タッチパッドを使用している場合はデュアル・タッチ・ポイントに反応します。
QScroller::LeftMouseButtonGesture1ジェスチャレコグナイザは、マウスの左ボタンイベントでのみトリガされます。
QScroller::MiddleMouseButtonGesture3ジェスチャー認識機能は、マウスの中ボタンイベントでのみトリガーされます。
QScroller::RightMouseButtonGesture2ジェスチャ・レコグナイザは、マウスの右ボタン・イベントでのみトリガされます。

enum QScroller::State

この列挙型には、QScroller の各状態が含まれる。

定数説明
QScroller::Inactive0スクローラーはスクロールしておらず、何も押されていない。
QScroller::Pressed1タッチイベントを受信したか、マウスボタンが押されたが、スクロール領域は現在ドラッグされていない。
QScroller::Dragging2スクロールエリアがタッチポイントまたはマウスに追従している。
QScroller::Scrolling3スクロールエリアが勝手に動いている。

プロパティの説明

scrollerProperties : QScrollerProperties

このプロパティは、このスクローラのスクローラプロパティを保持する。このプロパティは、QScroller スクロール動作を決定するために使用されます。

アクセス関数

QScrollerProperties scrollerProperties() const
void setScrollerProperties(const QScrollerProperties &prop)

通知シグナル

void scrollerPropertiesChanged(const QScrollerProperties &newProperties)

[read-only] state : const State

このプロパティは、スクローラーの状態を保持する。

アクセス関数

QScroller::State state() const

通知シグナル:

void stateChanged(QScroller::State newState)

QScroller::Stateも参照

メンバ関数ドキュメント

[static] QList<QScroller *> QScroller::activeScrollers()

現在アクティブなQScroller オブジェクトのアプリケーション全体のリストを返す。アクティブなQScroller オブジェクトは、QScroller::Inactive 以外のstate() にあります。この関数は、独自のジェスチャー認識器を書くときに便利です。

[slot] void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin)

矩形rect がビューポート内に見えるようにスクロールを開始し、矩形の周囲にxmarginymargin でピクセル単位で指定された余白を追加する。

矩形と余白をビューポート内に収めることができない場合、コンテンツはrect から可能な限り見えるようにスクロールされる。

スクロール速度は、プラットフォームで定義された時間経過後に指定された位置に到達するように計算される。

この関数は、scrollTo ()を呼び出すことで、実際のスクロールを実行する。

scrollTo()も参照

[slot] void QScroller::ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime)

これはオーバーロードされた関数である。

このバージョンはscrollTime ミリ秒で目的地の位置に到達する。

QPointF QScroller::finalPosition() const

現在のスクロール移動の推定最終位置を返します。スクローラーの状態が Scrolling でない場合は現在の位置を返します。スクローラーの状態が Inactive の場合、結果は未定義です。

目標位置の単位は pixel です。

pixelPerMeter() およびscrollTo()も参照

[static] Qt::GestureType QScroller::grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = TouchGesture)

カスタムスクロールジェスチャレコグナイザを登録し、targetscrollGestureTypeTouchGesture に設定されている場合、ジェスチャはタッチ イベントでトリガされます。LeftMouseButtonGesture,RightMouseButtonGesture,MiddleMouseButtonGesture のいずれかに設定されている場合は、対応するボタンのマウス イベントでトリガーされます。

1つのオブジェクトで同時にアクティブにできるスクロール ジェスチャは1つだけです。同じオブジェクトでこの関数を 2 回呼び出すと、新しいジェスチャをつかむ前に既存のジェスチャが解除されます。

注意: 不要な副作用を避けるため、ジェスチャがトリガされている間はマウスイベントが消費されます。最初のマウス押下イベントは消費されないので、ジェスチャはグローバル位置(INT_MIN, INT_MIN) で偽のマウス解放イベントを送信します。これにより、元のマウス押下を受け取ったウィジェットの内部状態が一貫していることが保証されます。

ungrabGesture() およびgrabbedGesture()も参照してください

[static] Qt::GestureType QScroller::grabbedGesture(QObject *target)

target で現在つかまれているジェスチャーの種類、またはジェスチャーがつかまれていない場合は 0 を返します。

grabGesture() およびungrabGesture()も参照してください

bool QScroller::handleInput(QScroller::Input input, const QPointF &position, qint64 timestamp = 0)

この関数は、ジェスチャ認識機能によって、新しい入力イベントをスクローラに通知するために使用されます。スクローラーは、入力イベントとそれに付随するスクローラーのプロパティに従って、内部のstate() を変更します。スクローラーは、イベントがどの入力デバイスから来たかを区別しません。そのため、イベントをinput タイプ、position 、ミリ秒timestamp に分割する必要があります。position はターゲットの座標系にある必要がある。

戻り値は、イベントが呼び出し元のフィルターで消費される場合はtrue 、イベントがコントロールに転送される場合はfalse

注: grabGesture ()を使用すれば、ほとんどのユースケースで十分です。

[static] bool QScroller::hasScroller(QObject *target)

QScroller オブジェクトがすでにtarget に対して作成されている場合はtrue を返し、そうでない場合はfalse を返す。

scroller()も参照のこと

QPointF QScroller::pixelPerMeter() const

スクロールされたウィジェットの1メートルあたりのピクセルを返します。

この値は、QPointF を使用して x 軸と y 軸の両方について別々に報告されます。

注意: この値は物理的に正しい値でなければならないことに注意してください。Qt がディスプレイに返す実際の DPI 設定は、macOS などの基本的なウィンドウシステムによって、意図的に間違って報告される可能性があります。

[slot] void QScroller::resendPrepareEvent()

この関数はQScrollPrepareEvent を再送する。 resendPrepareEvent を呼び出すと、スクローラーからQScrollPrepareEvent がトリガーされる。これにより、受信者はスクロール中にコンテンツの位置とサイズを再設定できる。スクロールが始まる前にprepareイベントが再度送信されるため、Inactive状態でこの関数を呼び出しても意味がない。

[slot] void QScroller::scrollTo(const QPointF &pos)

ポイントpos がビューポートの左上の位置になるように、ウィジェットのスクロールを開始します。

有効なスクロール領域の外側をスクロールする場合の動作は未定義です。この場合、スクロールはオーバーシュートするかもしれませんし、しないかもしれません。

スクロール速度は、プラットフォームで定義された時間経過後に指定された位置に到達するように計算されます。

pos はビューポート座標で指定します。

ensureVisible()も参照してください

[slot] void QScroller::scrollTo(const QPointF &pos, int scrollTime)

これはオーバーロードされた関数である。

このバージョンはscrollTime ミリ秒で目的地の位置に到達する。

[static] QScroller *QScroller::scroller(QObject *target)

与えられたtarget のスクローラーを返します。オブジェクトが存在する限り、この関数は常に同じQScroller インスタンスを返します。target に対応するQScroller が存在しない場合は、暗黙的に作成されます。1つのオブジェクトに対して複数のQScroller がアクティブになることはありません。

hasScroller() およびtarget()も参照

[static] const QScroller *QScroller::scroller(const QObject *target)

これはオーバーロードされた関数である。

これは scroller() の const バージョンである。

[signal] void QScroller::scrollerPropertiesChanged(const QScrollerProperties &newProperties)

QScroller newProperties は新しいスクローラのプロパティです。

注: プロパティscrollerProperties に対するノーティファイア・シグナル。

scrollerPropertiesも参照してください

void QScroller::setSnapPositionsX(const QList<qreal> &positions)

横軸のスナップ位置をpositions のリストに設定する。 これは、以前に設定されたすべてのスナップ位置と、以前に設定されたスナップ間隔を上書きする。スナップは、位置の空のリストを設定することによって無効にすることができる。

void QScroller::setSnapPositionsX(qreal first, qreal interval)

横軸のスナップ位置を一定間隔に設定する。最初のスナップ位置はfirst です。次のスナップ位置はfirst +interval 。これはリストヘッダーを実装するために使用できます。これは、以前に設定されたすべてのスナップ位置と、以前に設定されたスナップ間隔を上書きします。スナップは0.0の間隔を設定することで無効にできます。

void QScroller::setSnapPositionsY(const QList<qreal> &positions)

垂直軸のスナップ位置をpositions のリストに設定する。 これは、以前に設定されたすべてのスナップ位置と、以前に設定されたスナップ間隔を上書きする。スナップは、位置の空のリストを設定することによって無効にすることができる。

void QScroller::setSnapPositionsY(qreal first, qreal interval)

縦軸のスナップ位置を一定間隔に設定する。最初のスナップ位置はfirst です。次のスナップ位置はfirst +interval 。これは、以前に設定されたすべてのスナップ位置と、以前に設定されたスナップ間隔を上書きします。スナップは、間隔を0.0に設定することで無効にできます。

[signal] void QScroller::stateChanged(QScroller::State newState)

QScroller newState が新しいステートです。

注: state プロパティに対するノーティファイア・シグナル。

stateも参照してください

void QScroller::stop()

スクロールを停止し、その状態を非アクティブに戻す。

QObject *QScroller::target() const

このスクローラーのターゲットオブジェクトを返します。

hasScroller() およびscroller()も参照 ください。

[static] void QScroller::ungrabGesture(QObject *target)

target のジェスチャーを解除します。 ジェスチャーがつかまれていない場合は何もしません。

grabGesture() およびgrabbedGesture()も参照してください

QPointF QScroller::velocity() const

状態がスクロールまたはドラッグのとき、現在のスクロール速度をメートル毎秒で返します。それ以外の場合はゼロの速度を返す。

速度は、QPointF を使用して x 軸と y 軸の両方について別々に報告されます。

pixelPerMeter()も参照のこと

© 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.