QGestureRecognizer Class
QGestureRecognizer クラスは、ジェスチャー認識のための基盤を提供します。詳細...
| ヘッダー: | #include <QGestureRecognizer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
パブリック型
| flags | Result |
| enum | ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint } |
パブリック関数
| QGestureRecognizer() | |
| virtual | ~QGestureRecognizer() |
| virtual QGesture * | create(QObject *target) |
| virtual QGestureRecognizer::Result | recognize(QGesture *gesture, QObject *watched, QEvent *event) = 0 |
| virtual void | reset(QGesture *gesture) |
静的パブリックメンバー
| Qt::GestureType | registerRecognizer(QGestureRecognizer *recognizer) |
| void | unregisterRecognizer(Qt::GestureType type) |
詳細な説明
ジェスチャ認識器は、QGesture オブジェクトの作成と管理、およびQWidget およびQGraphicsObject のサブクラスに送信される入力イベントの監視を担当します。QGestureRecognizer は、カスタムジェスチャを実装するための基底クラスです。
標準的なジェスチャーの認識のみを提供すればよい開発者は、このクラスを直接使用する必要はありません。インスタンスはフレームワークによって内部で自動的に作成されます。
Qt におけるジェスチャ処理の概要や、アプリケーションでのジェスチャの使用方法については、『Qt Widgetsおよびグラフィックスビューにおけるジェスチャ』ドキュメントを参照してください。
ジェスチャーの認識
ジェスチャーの認識プロセスでは、特定のオブジェクトに送信される入力イベントをフィルタリングし、関連するQGesture オブジェクトを修正して、ユーザーの入力に関する関連情報を含める必要があります。
ジェスチャは、フレームワークが `create()` を呼び出し、QWidget またはQGraphicsObject のサブクラスの特定のインスタンスに対するユーザー入力を処理する際に生成されます。ジェスチャを使用するように設定された各ウィジェットまたはアイテムに対して、QGesture オブジェクトが作成されます。
対象オブジェクトに対してQGesture が作成されると、ジェスチャー認識器はrecognize()ハンドラ関数内でそのオブジェクトに関するイベントを受け取ります。
ジェスチャーがキャンセルされると、reset() 関数が呼び出され、認識器は対応するQGesture オブジェクトの適切なプロパティを更新することができます。
新しいジェスチャーのサポート
新しいジェスチャーをサポートするには、`QGestureRecognizer` を継承してカスタム認識クラスを作成し、そのクラスのインスタンスを生成して、`QGestureRecognizer::registerRecognizer()` を呼び出してアプリケーションに登録する必要があります。また、`QGesture ` をサブクラス化してカスタムジェスチャークラスを作成したり、動的プロパティを利用して処理したいジェスチャーの具体的な詳細を表現したりすることもできます。
カスタムの QGestureRecognizer サブクラスでは、QWidget およびQGraphicsObject のサブクラスに対する入力イベントを処理・フィルタリングするために、recognize() 関数を再実装する必要があります。ジェスチャ認識のロジックはこの関数内で実装されますが、認識プロセスの状態に関する永続的な情報は、渡されるQGesture オブジェクトに格納することができます。recognize() 関数は、指定されたジェスチャーおよびターゲットオブジェクトに対する認識状態を示すQGestureRecognizer::Result の値を返さなければなりません。これにより、ジェスチャーイベントがターゲットオブジェクトに配信されるかどうかが決定されます。
ジェスチャーをカスタムQGesture サブクラスで表現する場合は、create()関数を再実装して、ジェスチャークラスのインスタンスを生成する必要があります。同様に、ジェスチャーがキャンセルされた際にカスタムジェスチャーオブジェクトを特別に処理する必要がある場合は、reset()関数を再実装する必要がある場合があります。
QGestureも参照してください 。
メンバ型のドキュメント
enum QGestureRecognizer::ResultFlag
flags QGestureRecognizer::Result
この列挙型は、ジェスチャー認識器のステートマシンにおける現在のイベントフィルタリングステップの結果を表します。
結果は、状態値(Ignore、MayBeGesture、TriggerGesture、FinishGesture、CancelGestureのいずれか)と、オプションのヒント(ConsumeEventHint)で構成されます。
| 定数 | 値 | 説明 |
|---|---|---|
QGestureRecognizer::Ignore | 0x0001 | このイベントは、認識器の状態で変化をもたらしません。 |
QGestureRecognizer::MayBeGesture | 0x0002 | イベントによって認識器の内部状態は変化しましたが、それがジェスチャーであるかどうかは現時点では不明です。認識器は、判断するためにさらにイベントをフィルタリングする必要があります。MayBeGesture 状態にあるジェスチャー認識器は、ジェスチャーの認識に時間がかかりすぎる場合、自動的にリセットされることがあります。 |
QGestureRecognizer::TriggerGesture | 0x0004 | ジェスチャーがトリガーされ、適切なQGesture オブジェクトがQGestureEvent の一部としてターゲットに配信されます。 |
QGestureRecognizer::FinishGesture | 0x0008 | ジェスチャーが正常に完了し、適切なQGesture オブジェクトがQGestureEvent の一部としてターゲットに送信されます。 |
QGestureRecognizer::CancelGesture | 0x0010 | このイベントにより、これがジェスチャーではないことが明確になりました。もしジェスチャー認識器が以前に GestureTriggered 状態にあった場合、そのジェスチャーはキャンセルされ、適切なQGesture オブジェクトがQGestureEvent の一部としてターゲットに配信されます。 |
QGestureRecognizer::ConsumeEventHint | 0x0100 | このヒントは、ジェスチャーフレームワークがフィルタリングされたイベントを処理し、受信者に配信しないように指定するものです。 |
Result型は、QFlags<ResultFlag>のtypedefです。これは、ResultFlag値のOR組み合わせを格納します。
QGestureRecognizer::recognize()も参照してください 。
メンバ関数のドキュメント
QGestureRecognizer::QGestureRecognizer()
新しいジェスチャー認識オブジェクトを作成します。
[virtual noexcept] QGestureRecognizer::~QGestureRecognizer()
ジェスチャー認識機能を破棄します。
[virtual] QGesture *QGestureRecognizer::create(QObject *target)
この関数は、Qtによって呼び出され、指定されたtarget (QWidget またはQGraphicsObject )に対して新しいQGesture オブジェクトを作成します。
必要に応じて、この関数を再実装して、QGesture を継承したカスタムジェスチャーオブジェクトを作成してください。
QApplication は、作成されたジェスチャーオブジェクトの所有権を取得します。
[pure virtual] QGestureRecognizer::Result QGestureRecognizer::recognize(QGesture *gesture, QObject *watched, QEvent *event)
watched オブジェクトに対して指定されたevent を処理し、必要に応じてgesture オブジェクトの状態を更新し、現在の認識ステップに適した結果を返します。
この関数は、認識モジュールが監視しているQWidget またはQGraphicsObject インスタンスにディスパッチされた入力イベントをフィルタリングできるように、フレームワークによって呼び出されます。
結果は、ジェスチャーのどの程度が認識されたかを反映します。gesture オブジェクトの状態は、この結果に応じて設定されます。
「QGestureRecognizer::Result」も参照してください 。
[static] Qt::GestureType QGestureRecognizer::registerRecognizer(QGestureRecognizer *recognizer)
指定されたrecognizer をジェスチャーフレームワークに登録し、そのジェスチャーIDを返します。
QApplication recognizer の所有権を取得し、この関数はそれに紐づくジェスチャータイプIDを返します。カスタム オブジェクトを扱うジェスチャー認識器( ()関数内で を返すもの)の場合、戻り値は フラグが設定された生成済みジェスチャーIDとなります。QGesture QGesture::gestureType Qt::CustomGesture Qt::CustomGesture
unregisterRecognizer()、QGestureRecognizer::create()、およびQGestureも参照してください 。
[virtual] void QGestureRecognizer::reset(QGesture *gesture)
この関数は、指定されたgesture をリセットするためにQtによって呼び出されます。
カスタムQGesture オブジェクトに対する追加の要件を実装するには、この関数を再実装してください。ジェスチャーがリセットされる際にプロパティの特別な処理が必要なカスタムQGesture を実装する場合、これが必要になることがあります。
[static] void QGestureRecognizer::unregisterRecognizer(Qt::GestureType type)
指定されたtype のすべてのジェスチャー認識子を登録解除します。
registerRecognizer()も参照してください 。
© 2026 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.