Drag QML Type
移動したアイテムのドラッグ&ドロップイベントを指定します。詳細...
Import Statement: | import QtQuick |
付属プロパティ
- active : bool
- dragType : enumeration
- hotSpot : QPointF
- imageSource : QUrl
- imageSourceSize : size
(since 6.8)
- keys : stringlist
- mimeData : var
- proposedAction : enumeration
- source : Object
- supportedActions : flags
- target : Object
付属シグナル
- dragFinished(DropAction dropAction)
- dragStarted()
付属メソッド
- void cancel()
- enumeration drop()
- void start(flags supportedActions)
- void startDrag(flags supportedActions)
詳細説明
Drag アタッチド プロパティを使用すると、任意のアイテムをシーン内のドラッグ&ドロップ イベントのソースにすることができます。
ドラッグがアイテム上でactive 、そのアイテムの位置が変化するとドラッグイベントが生成され、アイテムの新しい位置と交差するDropArea に送られます。ドラッグ&ドロップ・イベント・ハンドラを実装している他のアイテムも、これらのイベントを受け取ることができます。
次のスニペットは、MouseArea でアイテムをドラッグする方法を示しています。しかし、ドラッグはマウスドラッグに限定されません。タッチイベント、アニメーション、バインディングなど、アイテムを移動できるものすべてがドラッグイベントを生成できます。
import QtQuick Item { width: 200; height: 200 DropArea { x: 75; y: 75 width: 50; height: 50 Rectangle { anchors.fill: parent color: "green" visible: parent.containsDrag } } Rectangle { x: 10; y: 10 width: 20; height: 20 color: "red" Drag.active: dragArea.drag.active Drag.hotSpot.x: 10 Drag.hotSpot.y: 10 MouseArea { id: dragArea anchors.fill: parent drag.target: parent } } }
ドラッグは、Drag.cancel() でキャンセルするか、Drag.active を false に設定して終了させるか、Drag.drop() を呼び出してドロップイベントで終了させることができます。ドロップイベントが受け入れられた場合、Drag.drop() はイベントの受信者によって選択されたdrop action を返します。そうでない場合は Qt.IgnoreAction を返します。
Qt Quick Examples - Drag and Dropも参照してください 。
Attached プロパティの説明
Drag.active : bool |
このプロパティは、ドラッグイベントシーケンスが現在アクティブであるかどうかを保持します。
このプロパティをMouseArea::drag の active プロパティにバインドすると、ユーザーがドラッグを開始したときにstartDrag が呼び出されます。
また、このプロパティをtrueに設定すると、アイテムの現在位置を示すQDragEnterイベントがシーンに送信されます。falseに設定すると、QDragLeaveイベントが送信されます。
ドラッグがアクティブな間、アイテムの位置が変更されると、アイテムの新しい位置を持つ QDragMove イベントがシーンに送られます。
Drag.dragType : enumeration |
このプロパティは、自動的にドラッグを開始するか、何もしないか、または後方互換性のある内部ドラッグを使用するかを示します。デフォルトでは、後方互換性のある内部ドラッグを使用します。
ドラッグは、startDrag を使用して手動で開始することもできます。
定数 | 説明 |
---|---|
Drag.None | ドラッグを自動的に開始しない |
Drag.Automatic | ドラッグを自動的に開始する |
Drag.Internal | (デフォルト) 後方互換性のあるドラッグを自動的に開始する。 |
Drag.Automatic
を使用する場合、mimeData も定義し、active プロパティをMouseArea の active プロパティにバインドする必要があります:MouseArea::drag.active
Drag.hotSpot : QPointF |
このプロパティは、アイテムの左上からの相対的なドラッグ位置を保持します。
デフォルトでは (0, 0) です。
ホットスポットを変更すると、更新された位置で新しいドラッグ移動がトリガーされます。
Drag.imageSource : QUrl |
このプロパティは、ドラッグ&ドロップ操作中にデータを表すために使用される画像の URL を保持します。ドラッグ操作の開始後にこのプロパティを変更しても効果はありません。
以下の例では、アイテムの内容をドラッグ画像として使用しています:
import QtQuick Item { width: 200; height: 200 Rectangle { anchors.centerIn: parent width: text.implicitWidth + 20; height: text.implicitHeight + 10 color: "green" radius: 5 Drag.dragType: Drag.Automatic Drag.supportedActions: Qt.CopyAction Drag.mimeData: { "text/plain": "Copied text" } Text { id: text anchors.centerIn: parent text: "Drag me" } DragHandler { id: dragHandler onActiveChanged: if (active) { parent.grabToImage(function(result) { parent.Drag.imageSource = result.url parent.Drag.active = true }) } else { parent.Drag.active = false } } } }
Item::grabToImage()も参照してください 。
Drag.imageSourceSize : size |
このプロパティは、ドラッグ&ドロップ操作中にデータを表現するために使用される画像のサイズを保持します。ドラッグ操作の開始後にこのプロパティを変更しても効果はありません。
このプロパティは、大きな画像が必要以上にメモリを使用しないように、読み込まれた画像に保存される最大ピクセル数を設定します。詳しくはImage.sourceSize をご覧下さい。
下の例では、あるサイズでレンダリングされた SVG 画像を、ドラッグ画像用に異なるサイズで再レンダリングしています:
import QtQuick Item { width: 200; height: 200 Image { anchors.centerIn: parent source: "images/qt_logo.svg" sourceSize.width: 96 Drag.dragType: Drag.Automatic Drag.supportedActions: Qt.CopyAction Drag.mimeData: { "text/plain": "Qt Quick rocks!" } Drag.imageSource: "images/qt_logo.svg" Drag.imageSourceSize: Qt.size(48, 35) Drag.active: dragHandler.active DragHandler { id: dragHandler } } }
このプロパティは Qt 6.8 で導入されました。
imageSource とItem::grabToImage()も参照してください 。
Drag.keys : stringlist |
このプロパティは、DropArea がドラッグイベントをフィルタリングするために使用できるキーのリストを保持します。
ドラッグ中にキーを変更すると、ドラッグイベントのシーケンスがリセットされます。
Drag.mimeData : var |
このプロパティは、startDrag の間に使用される MIME タイプからデータへのマップを保持します。MIME データは、MIME タイプに一致するタイプ(例えば、MIME タイプが "text/plain" の場合は文字列、MIME タイプが "image/png" の場合は画像)、または MIME タイプに従ってエンコードされたデータを持つArrayBuffer
である必要があります。
Drag.proposedAction : enumeration |
このプロパティは、Drag.drop() の戻り値としてドラッグソースが推奨するアクションを保持します。
proposedAction への変更は、更新された提案で move イベントをトリガします。
Drag.source : Object |
このプロパティは、イベントのソースとしてドラッグイベントの受信者に識別されるオブジェクトを保持します。デフォルトでは、これは Drag プロパティがアタッチされているアイテムです。
ドラッグがアクティブなときにソースを変更すると、ドラッグイベントの順序がリセットされます。
Drag.supportedActions : flags |
このプロパティは、ドラッグ・ソースがサポートする Drag.drop() の戻り値を保持します。
ドラッグがアクティブな間に supportedActions を変更すると、ドラッグの leave イベントの後に新しいソースでドラッグの enter イベントを送信することで、ドラッグイベントのシーケンスがリセットされます。
Drag.target : Object |
ドラッグがアクティブな間、このプロパティは、ドラッグされたアイテムから enter イベントを受け入れる最後のオブジェクトを保持します。
ドラッグがアクティブでないとき、このプロパティはドラッグを終了するドロップイベントを受け付けたオブジェクトを保持します。ドロップを受け付けたオブジェクトがないか、ドラッグがキャンセルされた場合、ターゲットはNULLになります。
Attached シグナルの説明
dragFinished(DropAction dropAction) |
dragStarted() |
Attached メソッドのドキュメント
void cancel() |
ドラッグシーケンスを終了します。
enumeration drop() |
ターゲットアイテムにドロップイベントを送信することで、ドラッグシーケンスを終了します。
ターゲットアイテムが受け付けたアクションを返します。ターゲットアイテムまたは親がドロップイベントを受け入れない場合、Qt.IgnoreAction が返されます。
返されるドロップアクションは以下のいずれかです:
定数 | 説明 |
---|---|
Qt.CopyAction | データをターゲットにコピー |
Qt.MoveAction | ソースからターゲットへデータを移動 |
Qt.LinkAction | ソースからターゲットへのリンクを作成する。 |
Qt.IgnoreAction | アクションを無視する(データに対して何もしない)。 |
void start(flags supportedActions) |
ドラッグイベントの送信を開始します。startDrag 、新しいスタイルのドラッグ開始方法です。
オプションの引数supportedActions を使用すると、開始するシーケンスのsupportedActions プロパティをオーバーライドできます。
void startDrag(flags supportedActions) |
ドラッグイベントの送信を開始します。
オプションの引数supportedActions は、開始シーケンスのsupportedActions プロパティをオーバーライドするために使用できます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。