MultiPointTouchArea QML Type
マルチタッチの処理が可能になります。詳細...
| Import Statement: | import QtQuick |
| Inherits: |
プロパティ
- maximumTouchPoints : int
- minimumTouchPoints : int
- mouseEnabled : bool
- touchPoints : list<TouchPoint>
信号
- canceled(list<TouchPoint> touchPoints)
- gestureStarted(GestureEvent gesture)
- pressed(list<TouchPoint> touchPoints)
- released(list<TouchPoint> touchPoints)
- touchUpdated(list<TouchPoint> touchPoints)
- updated(list<TouchPoint> touchPoints)
詳細な説明
MultiPointTouchArea は、複数のタッチポイントを追跡するために使用される非表示のアイテムです。
Item::enabled プロパティは、タッチ処理の有効化および無効化に使用されます。無効化されると、タッチエリアはマウスおよびタッチイベントに対して透過状態になります。
デフォルトでは、マウスは単一のタッチポイントと同じように処理され、タッチエリアがマウスイベントを処理しているため、タッチエリアの下にあるアイテムはマウスイベントを受け取りません。しかし、mouseEnabled プロパティがfalseに設定されている場合、マウスイベントに対して透過的になるため、別のマウス対応アイテム(MouseArea など)を使用して、マウス操作を個別に処理することができます。
MultiPointTouchArea は 2 つの方法で使用できます。
touchPointsを設定して、タッチポイントオブジェクトに、- `onTouchUpdated` または `onPressed`、`onUpdated`、`onReleased` ハンドラを使用して処理する
MultiPointTouchAreaは特定のタッチポイントの所有権を独占的に保持できますが、複数のMultiPointTouchAreaを同時にアクティブにし、それぞれが異なるタッチポイントのセットを処理することも可能です。
TouchPointも参照してください 。
プロパティのドキュメント
これらのプロパティは、タッチエリアが処理するタッチポイントの範囲を保持します。
これらは、例えば、2本指のタッチを処理するMultiPointTouchAreaと、3本指のタッチを処理するMultiPointTouchAreaをネストさせるなど、便利な機能です。
デフォルトでは、タッチエリア内のすべてのタッチポイントが処理されます。
mouseEnabled が true の場合、マウスはタッチポイントとして機能するため、これらの制約の対象となります。たとえば、maximumTouchPoints が 2 の場合、マウスを 1 つのタッチポイントとして、指をもう 1 つのタッチポイントとして使用でき、合計 2 つのタッチポイントになります。
mouseEnabled : bool
このプロパティは、MultiPointTouchArea がマウスイベントも処理するかどうかを制御します。true(デフォルト)の場合、タッチエリアはマウスを単一のタッチポイントと同様に扱います。falseの場合、タッチエリアはマウスイベントを無視し、イベントを「透過」させて、その下にある他のアイテムが処理できるようにします。
touchPoints : list<TouchPoint> [read-only]
このプロパティは、バインド可能なユーザー定義のタッチポイントオブジェクトのセットを保持します。
mouseEnabled が true(デフォルト)の場合、マウスがタッチエリア上にある状態でマウスの左ボタンが押されると、現在のマウス位置はこれらのタッチポイントのいずれかになります。
次の例では、タッチポイントに追従する 2 つの小さな長方形があります。
import QtQuick
Rectangle {
width: 400; height: 400
MultiPointTouchArea {
anchors.fill: parent
touchPoints: [
TouchPoint { id: point1 },
TouchPoint { id: point2 }
]
}
Rectangle {
width: 30; height: 30
color: "green"
x: point1.x
y: point1.y
}
Rectangle {
width: 30; height: 30
color: "yellow"
x: point2.x
y: point2.y
}
}デフォルトでは、このプロパティは空のリストを保持します。
「TouchPoint」も参照してください 。
シグナルに関するドキュメント
canceled(list<TouchPoint> touchPoints)
このシグナルは、別のアイテムがタッチイベントの処理を割り込んだために、新しいタッチイベントがキャンセルされた際に発火します。
このシグナルは高度な用途向けです。複数のMultiPointTouchArea が入力を処理している場合や、Flickable 内にMultiPointTouchArea が存在する場合に役立ちます。 後者の場合、onPressed シグナルハンドラで何らかのロジックを実行してからドラッグを開始すると、Flickable がMultiPointTouchArea からタッチ処理を奪う可能性があります。このような場合、MultiPointTouchArea がFlickable にタッチ処理を奪われたときにロジックをリセットするには、released に加えてcanceled も処理する必要があります。
touchPoints は、キャンセルされたポイントのリストです。
注: シグナルハンドラコード内でtouchPoints 引数を使用する場合は 、touchPoints プロパティとの混同を避けるため、形式パラメータ内で名前を変更することをお勧めします(QMLコーディング規約を参照):
onCanceled: (points) => console.log("canceled", points.length)注: 対応するハンドラは `onCanceled` です。
gestureStarted(GestureEvent gesture)
このシグナルは、グローバルなドラッグ閾値に達したときに発せられます。
このシグナルは通常、MultiPointTouchArea がFlickableや他のMultiPointTouchArea 内にネストされている場合に使用されます。閾値に達し、このシグナルが処理された際、タッチ領域が現在のタッチポイントを捕捉すべきかどうかを判断できます。 デフォルトでは、それらはグラブされません。グラブするには、gesture.grab() を呼び出してください。ジェスチャーがグラブされない場合、例えば、ネストされたFlickableもグラブする機会を得ることになります。
gesture オブジェクトには、現在のtouchPoints のセットやdragThreshold に関する情報も含まれています。
注: 対応するハンドラは onGestureStarted です。
pressed(list<TouchPoint> touchPoints)
このシグナルは、新しいタッチポイントが追加されたときに発火します。touchPoints には、これらの新しいポイントのリストが含まれます。
minimumTouchPoints が1より大きい値に設定されている場合、必要なタッチポイントの最小数に達するまで、このシグナルは発火しません。
注: シグナルハンドラコード内で `touchPoints ` 引数を使用する場合は 、touchPoints プロパティとの混同を避けるため、形式パラメータ内で名前を変更することをお勧めします(QML コーディング規約を参照):
onPressed: (points) => console.log("pressed", points.length)注: 対応するハンドラは `onPressed` です。
released(list<TouchPoint> touchPoints)
このシグナルは、既存のタッチポイントが削除された際に発火します。touchPoints には、削除されたポイントのリストが含まれます。
注: シグナルハンドラコード内でtouchPoints 引数を使用する場合は 、touchPoints プロパティとの混同を避けるため、形式パラメータ内で名前を変更することを推奨します(QMLコーディング規約を参照):
onReleased: (points) => console.log("released", points.length)注: 対応するハンドラは onReleased です。
touchUpdated(list<TouchPoint> touchPoints)
このシグナルは、MultiPointTouchArea が処理するタッチポイントが変更されたときに発火します。これには、新しいタッチポイントの追加、既存のタッチポイントの削除やキャンセル、および現在のタッチポイントデータの更新が含まれます。touchPoints は、現在のすべてのタッチポイントのリストです。
注: 対応するハンドラは `onTouchUpdated` です。
updated(list<TouchPoint> touchPoints)
このシグナルは、既存のタッチポイントが更新されたときに発火します。touchPoints には、更新されたタッチポイントのリストが格納されます。
注: シグナルハンドラのコード内で `touchPoints ` 引数を使用する場合は 、touchPoints プロパティとの混同を避けるため、形式パラメータ内の名前を変更することをお勧めします(QML コーディング規約を参照):
onUpdated: (points) => console.log("updated", points.length)注: 対応するハンドラは onUpdated です。
© 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.