このページでは

MultiPointHandler QML Type

マルチポイント・ポインタ・イベント用のアブストラクト・ハンドラ。詳細...

Import Statement: import QtQuick
Inherits:

PointerDeviceHandler

Inherited By:

DragHandler and PinchHandler

Status: Technology preview

この型はテクノロジープレビュー段階にあり、変更される可能性があります。

プロパティ

信号

  • 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テンキーのボタンを押す必要があります。
GroupSwitchModifierX11 のみ(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 (存在する場合)を能動的に操作していることを意味します。

centroid : QtQuick::handlerPoint [read-only]

現在押されているタッチポイントのちょうど中央にある点。押されている点が1つだけの場合は、その点と同じ位置になります。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.What'sThisカーソル
  • 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 です。

タッチ検出範囲を拡大するための余白領域を周囲に設けた長方形

maximumPointCount : int

このハンドラーが利用できるタッチポイントの最大数です。

parent に接触しているタッチポイントの数がこれを超える場合、必要な数のポイントが押された順に選択され、残りのポイントは無視されます。

無視されたタッチポイントは、同じアイテム上または他のアイテム上で、異なる制約を持つ他の入力ハンドラを起動する対象となります。

デフォルト値は、minimumPointCount と同じです。

minimumPointCount : int

このハンドラを起動するために必要なタッチポイントの最小数。

parent に接触しているタッチポイントの数がこれより少ない場合、それらは無視されます。

無視されたタッチポイントは、同じアイテム上または他のアイテム上で、異なる制約を持つ他の入力ハンドラを起動する対象となります。

デフォルト値は 2 です。

parent : Item

Item は、ハンドラの適用範囲であり、それが宣言されたItemです。ハンドラはこのItemに代わってイベントを処理します。つまり、ポインタイベントは、そのeventPoints のうち少なくとも1つがItemの内部で発生する場合にのみ関連します。初期状態ではtarget() は同一ですが、再割り当てが可能です。

target およびQObject::parent()も参照してください 。

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.