PointerDeviceHandler QML Type
デバイス固有の制約を持つポインタイベント用のアブストラクトハンドラ。詳細...
| Import Statement: | import QtQuick |
| Inherits: | |
| Inherited By: | DragHandler, HoverHandler, MultiPointHandler, PinchHandler, PointHandler, SinglePointHandler, TapHandler, and WheelHandler |
| Status: | Technology preview |
この型はテクノロジープレビュー段階にあり、変更される可能性があります。
プロパティ
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- grabPermissions : flags
- margin : real
- parent : Item
- target : Item
信号
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
詳細な説明
デバイスタイプ、ポインタタイプ、またはキーボード修飾キーに基づいてフィルタリングを行うハンドラ用の中間クラス(QML タイプとして登録されていません)。
プロパティのドキュメント
acceptedButtons : flags
このポインタハンドラを起動できるマウスボタン。
デフォルトでは、このプロパティはQt.LeftButton に設定されています。マウスボタンの「OR」組み合わせに設定することができ、それ以外のボタンからのイベントは無視されます。
たとえば、2つのハンドラを使用して、左クリックと右クリックに対して異なる動作をさせるように制御することができます。
Item {
TapHandler {
onTapped: console.log("left clicked")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: console.log("right clicked")
}
}注: タッチスクリーンでのタップ や、グラフィックタブレットでのスタイラスのタップは、マウスの左ボタンクリックをエミュレートします。この動作は、acceptedDevices またはacceptedPointerTypes を使用して変更できます。
acceptedDevices : flags
このポインタハンドラを起動できるポインティングデバイスの種類。
デフォルトでは、このプロパティは `PointerDevice.AllDevices` に設定されています。デバイスタイプの「または(OR)」の組み合わせに設定した場合、条件に一致しないデバイスからのイベントは無視されます。
たとえば、2つのハンドラを使用して、コントロールがマウスやスタイラスのクリックにはある方法で、タッチスクリーンのタップには別の方法で反応するように設定できます。
Item {
TapHandler {
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus
onTapped: console.log("clicked")
}
TapHandler {
acceptedDevices: PointerDevice.TouchScreen
onTapped: console.log("tapped")
}
}注: 現時点では、すべてのプラットフォームがマウスとタッチパッドを区別できるわけではありません 。また、区別できるプラットフォームであっても、マウスとタッチパッドの動作を同じにしたい場合がよくあります。
acceptedModifiers : flags
このプロパティが設定されている場合、ポインタイベントに反応するには、指定されたキーボード修飾キーが押されている必要があり、そうでない場合はそれらを無視します。
このプロパティがQt.KeyboardModifierMask (デフォルト値)に設定されている場合、PointerHandler は修飾キーを無視します。
たとえば、Item には同じタイプのハンドラが2つあり、そのうち1つは必要なキーボード修飾キーが押されている場合にのみ有効になるように設定できます。
Item {
TapHandler {
acceptedModifiers: Qt.ControlModifier
onTapped: console.log("control-tapped")
}
TapHandler {
acceptedModifiers: Qt.NoModifier
onTapped: console.log("tapped")
}
}acceptedModifiers を修飾キーの「OR」組み合わせに設定した場合、そのハンドラーを有効にするには、それらの修飾キーがすべて押されている必要があります:
Item {
TapHandler {
acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier
onTapped: console.log("control-alt-shift-tapped")
}
}使用可能な修飾キーは以下の通りです:
| 定数 | 説明 |
|---|---|
NoModifier | 修飾キーは使用できません。 |
ShiftModifier | キーボードの Shift キーを押している必要があります。 |
ControlModifier | キーボードの Ctrl キーを押す必要があります。 |
AltModifier | キーボードの Alt キーを押す必要があります。 |
MetaModifier | キーボードの Meta キーを押す必要があります。 |
KeypadModifier | テンキーのボタンを押す必要があります。 |
GroupSwitchModifier | X11 のみ(Windows でコマンドライン引数によって有効化されていない場合)。キーボードの Mode_switch キーを押す必要があります。 |
KeyboardModifierMask | ハンドラは、どの修飾キーが押されたかについては関知しません。 |
複数のハンドラと複数の修飾子フラグの組み合わせで実現できる以上の複雑な動作が必要な場合は、JavaScript コード内で修飾子を確認することができます。
Item {
TapHandler {
onTapped:
switch (point.modifiers) {
case Qt.ControlModifier | Qt.AltModifier:
console.log("CTRL+ALT");
break;
case Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier:
console.log("CTRL+META+ALT");
break;
default:
console.log("other modifiers", point.modifiers);
break;
}
}
}Qt::KeyboardModifierも参照してください 。
acceptedPointerTypes : flags
このポインタハンドラを起動できるポインティングデバイスの種類(指、スタイラス、消しゴムなど)。
デフォルトでは、このプロパティはPointerDevice.AllPointerTypes に設定されています。デバイスタイプの「OR」組み合わせに設定した場合、一致しないdevices からのイベントは無視されます。
たとえば、あるコントロールがマウス、タッチ、スタイラスのクリックには何らかの形で反応するようにしつつ、グラフィックタブレット上の消しゴムツールでタップされた場合は自身を削除するようにするには、次の2つのハンドラを使用します。
Rectangle {
id: rect
TapHandler {
acceptedPointerTypes: PointerDevice.Generic | PointerDevice.Finger | PointerDevice.Pen
onTapped: console.log("clicked")
}
TapHandler {
acceptedPointerTypes: PointerDevice.Eraser
onTapped: rect.destroy()
}
}active : bool [read-only]
この変数には、この入力ハンドラが1つ以上のeventPoints を排他的に取得することに成功し、それらの処理を単独で担当している間、true が格納されます。これは、この変数が、それらのeventPointsの動きに応じてプロパティを最新の状態に保ち、target (存在する場合)を能動的に操作していることを意味します。
cursorShape : Qt::CursorShape
このプロパティは、active がtrue に設定されている間、parent アイテムにマウスをホバーさせた際に表示されるカーソルの形状を保持します。
利用可能なカーソル形状は以下の通りです:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.SizeVerCursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.BlankCursor
- Qt.SplitVCursor
- Qt.SplitHCursor
- Qt.指差しカーソル
- Qt.ForbiddenCursor
- Qt.whatsThisCursor
- Qt.BusyCursor
- Qt.開いた手のカーソル
- Qt.閉じた手のカーソル
- Qt.ドラッグコピーカーソル
- Qt.DragMoveCursor
- Qt.DragLinkCursor
デフォルト値は設定されておらず、これによりparent 項目のcursor が表示されます。このプロパティは、undefinedに設定することで初期状態に戻すことができます。
注: このプロパティが設定されていない場合 、または `undefined` に設定されている場合、その値を読み取ると `Qt.ArrowCursor` が返されます。
関連項目: Qt::CursorShape 、QQuickItem::cursor()、およびHoverHandler::cursorShape 。
dragThreshold : int
eventPoint をドラッグジェスチャーとして認識させるために、ユーザーがドラッグしなければならないピクセル単位の距離。
デフォルト値はプラットフォームや画面解像度によって異なります。これを `undefined` に設定することで、デフォルト値に戻すことができます。ドラッグジェスチャーが開始された際の動作は、ハンドラによって異なります。
enabled : bool
PointerHandler が無効になっている場合、すべてのイベントが拒否され、シグナルは一切発信されません。
PointerHandler のparent がdisabled に設定されている場合、enabled プロパティがtrue のままであっても、ハンドラは事実上無効化されます。
注: HoverHandler の動作は異なります。詳細については、そのenabled プロパティのドキュメントを参照してください。
grabPermissions : flags
このプロパティは、このハンドラのロジックが排他的なグラブを引き継ぐことを決定した場合、または別のハンドラからグラブの引き継ぎや取り消しの承認を求められた場合の権限を指定します。
| 定数 | 説明 |
|---|---|
PointerHandler.TakeOverForbidden | このハンドラは、いかなるタイプの Item や Handler に対しても、グラブ権限を取得したり付与したりすることはありません。 |
PointerHandler.CanTakeOverFromHandlersOfSameType | 定数説明このハンドラは、いかなる種類のアイテムやハンドラからもグラブ権限を取得せず、また付与もしません。 |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | このハンドラは、あらゆる種類のハンドラから排他グラブを引き継ぐことができます。このハンドラは、あらゆる種類のアイテムから排他グラブを引き継ぐことができます。 |
PointerHandler.CanTakeOverFromItems | このハンドラは、あらゆるタイプのアイテムから排他的なグラブを取得できます。 |
PointerHandler.CanTakeOverFromAnything | このハンドラは、あらゆる種類のアイテムまたはハンドラから排他的なグラブを取得できます。 |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | このハンドラは、同じクラスの別のハンドラがグラブを取得することを許可します。 |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | このハンドラは、あらゆる種類のハンドラがグラブを取得することを許可します。 |
PointerHandler.ApprovesTakeOverByItems | このハンドラは、あらゆる種類のアイテムがグラブを取得することを許可します。 |
PointerHandler.ApprovesCancellation | このハンドラは、自身のグラブが null に設定されることを許可します。 |
PointerHandler.ApprovesTakeOverByAnything | このハンドラは、あらゆるタイプのアイテムまたはハンドラがグラブを取得することを許可します。 |
デフォルトは `PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything ` であり、ほとんどの引き継ぎシナリオを許可しますが、例えば、2 つの `PinchHandler` が同じタッチポイントを奪い合うような事態は回避します。
margin : real
parent 項目の境界線の外側にある余白で、eventPoint がこのハンドラを起動できる範囲です。たとえば、PinchHandler で、target が同時にparent となっている場合、この値を一般的なユーザーの指の幅の少なくとも半分以上の距離に設定しておくと便利です。そうすることで、parent が非常に小さなサイズに縮小されていても、ピンチジェスチャが引き続き可能になります。 あるいは、TapHandler ベースのボタンを画面の端近くに配置する場合、フィッツの法則に準拠するためにこれを利用できます。つまり、ボタンが視覚的には画面の端から数ピクセル離れているにもかかわらず、画面の端でのマウスクリックに反応するようにするのです。
デフォルト値は 0 です。

parent : Item
Item :ハンドラのスコープであり、それが宣言されたItemです。ハンドラはこのItemに代わってイベントを処理します。つまり、ポインタイベントについては、そのeventPoints のうち少なくとも1つがItemの内部で発生する場合にのみ、そのイベントが関連するとみなされます。初期状態ではtarget() は同一ですが、再割り当てが可能です。
target およびQObject::parent()も参照してください 。
target : Item
このハンドラが操作するアイテム。
デフォルトでは、これはparent (ハンドラが宣言されているItem)と同じです。ただし、あるItem内のイベントを処理しつつ別のItemを操作する場合や、null としてデフォルトの動作を無効にし、代わりに別の処理を行う場合など、ターゲットを別のItemに設定すると便利な場合があります。
シグナルのドキュメント
canceled(eventPoint point)
このハンドラーがすでに指定されたpoint を取得している場合、別のポインタハンドラーまたはアイテムによってその取得が奪われたときに、このシグナルが発行されます。
注: 対応するハンドラは onCanceled です。
grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
このシグナルは、グラブにこのハンドラに関連する何らかの変化が生じたときに発せられます。
transition (動詞)は、何が起こったかを示します。point (目的語)は、グラブされた、またはグラブが解除されたポイントです。
transition の有効な値は以下の通りです:
| 定数 | 説明 |
|---|---|
PointerDevice.GrabExclusive | このハンドラーが、point の処理に関する主たる責任を引き受けました。 |
PointerDevice.UngrabExclusive | このハンドラは、以前の排他的なグラブを放棄しました。 |
PointerDevice.CancelGrabExclusive | このハンドラの排他的なグラブが引き継がれたか、またはキャンセルされました。 |
PointerDevice.GrabPassive | このハンドラは、point を監視するために、パッシブ・グラブを取得しました。 |
PointerDevice.UngrabPassive | このハンドラは、以前のパッシブ・グラブを解放しました。 |
PointerDevice.CancelGrabPassive | このハンドラの以前のパッシブグラブが異常終了しました。 |
注: 対応するハンドラは onGrabChanged です。
© 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.