マウスイベント
マウスやタッチスクリーンを含むすべてのポインティングデバイスからのイベントを処理する、より現代的な方法は、入力ハンドラを介して行われます。このページでは、当初マウス入力を処理するために設計され、後にシンプルなタッチ指向のユーザーインターフェイスでシングルタッチイベント(合成マウスイベントの形)を処理するようになった、オリジナルのQt Quick MouseArea タイプについて説明します。
マウス型
- 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のイベントシステムについては、シグナルとハンドラ、イベントシステムのドキュメントをお読みください。
© 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.