マウスイベント
マウスやタッチスクリーンを含むすべてのポインティングデバイスからのイベントを扱うより現代的な方法は、入力ハンドラを介することです。このページでは、オリジナルの Qt QuickMouseArea タイプについて説明します。このタイプは、当初マウス入力を処理するために設計され、後にシンプルなタッチ指向のユーザーインターフェイスでシングルタッチのイベント(合成マウスイベントの形)を処理するようになりました。
マウスの型
- MouseArea タイプ
- MouseEvent オブジェクト
マウスイベントの処理
QML はシグナルとハンドラを用いてマウス操作を行います。具体的には、Qt Quick はMouseArea とMouseEvent という型を提供し、定義された領域内でマウスイベントを受け付ける JavaScript コールバック(シグナルハンドラとも呼ばれます)を定義できるようにしています。
マウス領域の定義
MouseArea 型は、定義された領域内のイベントを受け取ります。この領域を定義する1つの簡単な方法は、anchors.fill
プロパティを使用して、MouseArea
を親の領域に固定することです。親がRectangle (またはItem コンポーネント) の場合、MouseArea は親の寸法で定義された領域を埋めます。あるいは、親より小さいまたは大きい領域を定義することもできます。
Rectangle { id: button width: 100; height: 100 MouseArea { anchors.fill: parent onClicked: console.log("button clicked") } MouseArea { width:150; height: 75 onClicked: console.log("irregular area clicked") } }
イベントの受信
MouseArea 型は、さまざまなマウス・イベントに応答してシグナルを発します。これらのジェスチャーについては、MouseArea のドキュメントで詳しく説明されています:
- キャンセルされた
- クリックされた
- ダブルクリック
- 入力された
- 退出
- 位置変更
- プレスアンドホールド
- 押された
- 離された
これらのシグナルは、シグナルが発せられたときに呼び出されるコールバックを持つことができる。
MouseArea { anchors.fill: parent onClicked: console.log("area clicked") onDoubleClicked: console.log("area double clicked") onEntered: console.log("mouse entered the area") onExited: console.log("mouse left the area") }
ジェスチャーを有効にする
一部のマウス・ジェスチャーとボタン・クリックは、イベントを送受信する前に有効にする必要があります。特定のMouseArea とMouseEvent プロパティは、これらのジェスチャーを有効にします。
特定のマウス・ボタンをリッスンする(または明示的に無視する)には、該当するマウス・ボタンをacceptedButtons プロパティに設定します。
当然、ボタン押下やマウス位置などのマウス・イベントは、マウス・クリック中に送信される。例えば、containsMouse
プロパティは、マウスが押されている間だけ正しい値を取得します。hoverEnabled は、マウス・ボタンが押されていないときでも、マウス・イベントと位置決めを有効にします。hoverEnabled
プロパティをtrue
に設定すると、entered
、exited
、positionChanged
シグナルとそれぞれのシグナル・ハンドラが有効になります。
MouseArea { hoverEnabled: true acceptedButtons: Qt.LeftButton | Qt.RightButton onEntered: console.log("mouse entered the area") onExited: console.log("mouse left the area") }
さらに、マウス領域全体を無効にするには、MouseArea enabled
プロパティをfalse
に設定します。
MouseEventオブジェクト
シグナルとそのコールバックは、MouseEvent オブジェクトをパラメータとして受け取ります。mouse
オブジェクトには、マウス・イベントに関する情報が含まれています。例えば、イベントを開始したマウスボタンは、mouse.button プロパティを通して照会されます。
また、MouseEvent
オブジェクトは、accepted
プロパティを使用してマウスイベントを無視することもできます。
さらなるシグナルの受け入れ
シグナルの多くは、ダブルクリックなどの様々なマウスイベントを反映するために複数回送信されます。マウスクリックの分類を容易にするために、MouseEvent オブジェクトは、accepted
プロパティを持ち、イベントの伝播を無効にします。
QMLのイベントシステムについての詳細は、シグナルとハンドラ、イベントシステムのドキュメントを参照してください。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。