MultiPointTouchArea QML Type

複数のタッチポイントを扱えるようにする。詳細...

Import Statement: import QtQuick
Inherits:

Item

プロパティ

信号

詳細説明

MultiPointTouchArea は、複数のタッチポイントを追跡するために使用される不可視アイテムです。

Item::enabled プロパティを使用して、タッチ処理を有効または無効にします。無効にすると、タッチ領域はマウスおよびタッチ イベントに対して透明になります。

デフォルトでは、マウスは1つのタッチ・ポイントと同じように処理され、タッチ・エリアの下にあるアイテムは、タッチ・エリアが処理しているため、マウス・イベントを受信しません。しかし、mouseEnabled プロパティをfalseに設定すると、マウスイベントに対して透明になり、別のマウスセンシティブItem(MouseArea など)を使用してマウス操作を個別に処理できるようになります。

MultiPointTouchAreaは、2つの方法で使用することができます:

  • 設定touchPoints にバインドできるプロパティを持つタッチポイント・オブジェクトを提供する。
  • onTouchUpdatedまたはonPressed、onUpdated、onReleasedハンドラを使用する。

MultiPointTouchAreaは特定のタッチポイントを排他的に所有することができますが、複数のMultiPointTouchAreaを同時にアクティブにし、それぞれが異なるタッチポイントのセットで動作することも可能です。

TouchPointも参照してください

プロパティ・ドキュメント

maximumTouchPoints : int

minimumTouchPoints : int

これらのプロパティは、タッチ・エリアが処理するタッチ・ポイントの範囲を保持します。

これらのプロパティは、例えば、入れ子になったMultiPointTouchAreaを持ち、1つは2本の指のタッチを処理し、もう1つは3本の指のタッチを処理することを可能にする便利なものです。

デフォルトでは、タッチ領域内のすべてのタッチポイントが処理されます。

mouseEnabled たとえば、maximumTouchPoints が 2 の場合、マウスを 1 つのタッチ ポイントとして使用し、指をもう 1 つのタッチ ポイントとして使用して、合計 2 つのタッチ ポイントを使用できます。


mouseEnabled : bool

このプロパティは、MultiPointTouchArea がマウス・イベントも処理するかどうかを制御します。true(デフォルト)の場合、タッチエリアはマウスを1つのタッチポイントと同じように扱います。falseの場合、タッチエリアはマウスイベントを無視し、下にある他のアイテムで扱えるように「通過」させます。


touchPoints : list<TouchPoint> [read-only]

このプロパティは、バインド可能なユーザー定義のタッチポイントオブジェクトのセットを保持します。

mouseEnabled (デフォルト)がtrueで、マウスがタッチ・エリア上にあるときにマウスの左ボタンが押されると、現在のマウス位置がこれらのタッチ・ポイントの1つになります。

以下の例では、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 シグナルハンドラで何らかのロジックを実行してからドラッグを開始すると、FlickableMultiPointTouchArea からタッチ処理を奪う可能性があります。 このような場合、MultiPointTouchAreaFlickable にタッチ処理を奪われたときにロジックをリセットするには、released に加えてcanceled も処理する必要があります。

touchPoints はキャンセルされたポイントのリストである。

注: touchPoints の引数をシグナルハンドラのコードで使用する場合は、touchPoints プロパティとの混同を避けるために、正式なパラメータで名前を変更するのが最善です(QMLコーディング規約を参照):

onCanceled: (points) => console.log("canceled", points.length)

注: 対応するハンドラはonCanceled です。


gestureStarted(GestureEvent gesture)

このシグナルは、グローバルドラッグのしきい値に達したときに発行されます。

このシグナルは通常、MultiPointTouchArea が Flickable や他のMultiPointTouchArea にネストされている場合に使用されます。閾値に到達し、シグナルが処理されると、タッチエリアが現在のタッチポイントをつかむかどうかを決定できます。デフォルトでは、タッチ点はつかまれません。タッチ点をつかむには、gesture.grab() を呼び出します。ジェスチャーが掴まれない場合、例えば入れ子になっているFlickableも掴まれる機会があります。

gesture オブジェクトには、現在のtouchPointsdragThreshold のセットに関する情報も含まれます。

注: 対応するハンドラは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 Coding Conventions 参照)との混同を避けるため、正式なパラメータで名前を変更するのが最善です:

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)

Note: 対応するハンドラはonUpdated です。


© 2025 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.