SinglePointHandler QML Type
シングルポイントのポインタイベント用のアブストラクトハンドラ。詳細...
| Import Statement: | import QtQuick |
| Inherits: | |
| Inherited By: | |
| 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
- point : handlerPoint
- target : Item
信号
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
詳細な説明
最も一般的なハンドラ(単一のポイントのみを受け取るもの)のための中間クラス(QML型として登録されていません)。wantsPointerEvent() は、target アイテム内の最初のポイントを選択し、イベントにそのポイントが含まれている限り true を返します。単一ポイントのハンドラを実装するには、handleEventPoint() をオーバーライドしてください。
プロパティのドキュメント
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.SplitVカーソル
- Qt.SplitHCursor
- Qt.指差しカーソル
- Qt.ForbiddenCursor
- Qt.WhatIsThisカーソル
- 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()も参照してください 。
point : handlerPoint [read-only]
現在処理中のeventPoint 。現在処理中のポイントが存在しない場合、このオブジェクトはデフォルト値(すべての座標が0)にリセットされます。
target : Item
このハンドラが操作するアイテム。
デフォルトでは、これはparent 、つまりハンドラが宣言されている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.