Qt Quick Examples - ポインタハンドラ

インタラクティブなコンポーネントでQt Quick Input Handlers を使用する方法を示します。

Qt Quick Controlsには、多くの種類のユーザーインターフェースに十分なコンポーネントがあらかじめ組み込まれています。そのような場合、ポインタ・ハンドラを使う必要があります。これは、一般的なインタラクション・パターンと、あまり一般的でないインタラクション・パターンの実装方法を示す、小さな例の集まりです。

サンプルを実行可能ファイルとしてビルドする場合、トップレベルのListView からページを選択することができます。TouchpointFeedbackSpriteMouseFeedbackSprite コンポーネントは、PointHandler を使って、ユーザーがポインティングデバイスを使って何をしているかについてのフィードバックを提供する方法を示しています。これらのコンポーネントは、例全体を通して常に表示されており、他の場所でのインタラクションを妨げることはありません。これらのコンポーネントは、ユーザーインターフェースのビデオやライブデモを行う必要がある場合に再利用するのに便利です。

また、いくつかのQMLファイルはqmlツールを使ってコマンドラインで実行することもできます。

タップハンドラー

tap "ページでは、タッチスクリーンのタップ、長押し、さまざまなボタンでのマウスクリックを検出する方法を示しています。また、gesturePolicy の値を変えて試すこともできます。

マルチタップボタン

このページには、gesturePolicy の値が異なる3つのカスタムButton コンポーネントがあります。1つのボタンは、押してから離すまでの間、指またはマウスをボタン内にとどめておく必要があります。1つは、ボタンの外側をドラッグし、離す前にドラッグし直しても実行されます。1つは、system-wide drag threshold を少し超えてドラッグすると、押された状態を終了します。タッチスクリーンでこの例を試してみると、3つのボタンを同時に別の指で操作できるはずです。

パイメニュー

このページでは、長押しするとアニメーションして表示される、タッチスクリーンにやさしいパイメニューの書き方を紹介します。中央の位置からセクタの1つにドラッグして離すと、メニュー項目を選択できます。メニューの外側をドラッグしたり、メニューの途中で離したりすると、何も選択されません。灰色のビューポートの外側をドラッグすると、メニューはキャンセルされます。

ポイントハンドラ

single point handler "ページでは、PointHandler が、SinglePointHandler::pointhandlerPoint::device にあるプロパティのいくつかからのフィードバックを提供します。 このサンプルを実行可能ファイルとしてビルドした場合、メインの pointerhandlers.qml ファイルにある PointHandlers からのフィードバックと同時に、このフィードバックが表示されます。

タブレット・キャンバス」ページでは、PointHandler を使用して、異なるtypes of pointing devices を一意に検出します。そのため、コンピュータに接続された描画タブレットがあれば、ペン、エアブラシ、マーカーなど、さまざまなタイプのスタイラスでキャンバス・アイテムに描画できます。スタイラスの消しゴムでストロークを「消す」ことができます(ここでは背景色で上から描画しています)。いくつかのHoverHandlers は、どのタイプのスタイラスまたは消しゴムが検出されたかについてのフィードバックを提供します。

ホバーハンドラー

hover sidebar "ページでは、マウスがボタンコンポーネントとそのコンテナを同時にホバーしたときの検出方法を示しています。HoverHandler::blocking プロパティを設定することで、伝播を無効にすることができます。ここでは、HoverHandlerMouseArea のすべての組み合わせを試して、ホバー検出の処理方法を比較することができます。さらにもう1つ、HoverHandler 、現在のマウス位置をシーン座標で表示しています。

また、アニメーションする「プラットフォーム」上のHoverHandler 、マウスカーソルの下でスライドするたびにホバーされることも確認できます。

ドラッグハンドラー

ジョイスティック "のページでは、DragHandlerImage をドラッグしています。StateAnchorChangesアンカーのロックを解除して、ドラッグができるようにします。AnchorAnimation は、ノブを放したときに、ノブが中央の位置に戻るアニメーションをします。

fling animation "のページでは、DragHandler::centroid::velocityプロパティの使い方の一例を示しています。これは単に、QEventPoint::velocity ()の値をQMLで利用できるようにしたものです。この例で使用されているMomentumAnimation コンポーネントは、より重いソリューションに頼ることなく、物理学(運動量と摩擦)をシミュレートする1つの方法を示しています。

ピンチハンドラー

あるものは2本の指を必要とし、あるものは3本の指を必要とします。PinchHandler のaxis minとmaxプロパティで制約を管理し、通常の拡大縮小、回転、移動を実行します。PinchHandler インスタンスの1つは、位置、スケール、回転ではなく、さまざまなRectangle プロパティを操作するために使用されます。様々なPinchHandler プロパティが様々な方法でバインドされています。各インスタンスを一意に操作できるようにする必要があります。アイテムによっては、DragHandlers や TapHandlers もあります。

相互運用性

スライダー

mixer "ページでは、ListView デリゲート内で複数のハンドラを使用する方法を示しています。複数のSlider コンポーネントを同時に操作でき、ListView を横にフリックできます。

  • DragHandler では、スライダーノブがスライドできる「トラック」に沿って、どこでもドラッグを開始できます。デフォルトのsnapModeDragHandler.SnapAuto であるため、system-wide drag threshold を超えてドラッグすると、ノブはマウスまたはタッチポイントの中央にスナップします。
  • WheelHandler は、ノブのy プロパティImage を直接調整します。
  • BoundaryRule は、DragHandler またはWheelHandler がノブをドラッグしすぎるのを防ぎます。
  • TapHandler は、一般的なSlider コンポーネントが持つジェスチャーよりももう一つジェスチャーを提供します。

地図

map "ページはSVG Image のドラッグ、変形、再拡大を実演します。地図上の特定の場所にズームできるはずだ。ズームレベルが大幅に変更されると、Image::sourceSize 、SVGを別の解像度で再レンダリングするよう要求するように変更される。二本指で垂直にドラッグすると、Rotation 変換を操作して地図を傾けるDragHandler がアクティブになる。

偽フリック可能

偽Flickable "ページには、Flickable の機能の多くを、個別のポインタ・ハンドラとアニメーションを使って再現する試みが含まれています。Flickableは複雑なコンポーネントですが、ここでは、複雑な機能を使わずに機能の一部だけを持ちたい場合に備えて、個々の動作を分離する方法の1つを見ることができます。

また、スライド式の「ドロワー」コンポーネントもあり、ポインター・ハンドラーを使ったコントロールがいくつか用意されている。

サンプルプロジェクト @ code.qt.io

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。