Drag QML Type
移動したアイテムのドラッグ&ドロップイベントを指定します。詳細...
| Import Statement: | import QtQuick |
付属プロパティ
- active : bool
- dragType : enumeration
- hotSpot : point
- imageSource : url
- 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 attached プロパティを使用すると、任意のアイテムをシーン内のドラッグ&ドロップ イベントのソースにすることができます。
ドラッグがアイテムに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 Property ドキュメント
Drag.active : bool [read-only]
このプロパティは、ドラッグイベントシーケンスが現在アクティブであるかどうかを保持する。
このプロパティを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 : point
このプロパティは、アイテムの左上からの相対的なドラッグ位置を保持する。
デフォルトでは (0, 0) です。
ホットスポットを変更すると、更新された位置で新しいドラッグ移動がトリガーされます。
Drag.imageSource : url
このプロパティは、ドラッグ&ドロップ操作中にデータを表すために使用される画像の 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 [since 6.8]
このプロパティは、ドラッグ&ドロップ操作中にデータを表現するために使用される画像のサイズを保持します。ドラッグ操作の開始後にこのプロパティを変更しても効果はありません。
このプロパティは、大きな画像が必要以上にメモリを使用しないように、ロードされた画像に保存される最大ピクセル数を設定します。詳しくは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 "であれば文字列、"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になります。
付属のシグナル・ドキュメント
dragFinished(DropAction dropAction)
このシグナルは、ドラッグが終了し、startDrag() メソッドでドラッグが開始されたか、dragType プロパティを使用して自動的に開始されたときに発行されます。
dropAction は、ターゲットアイテムが受け付けたアクションを保持します。
注: 対応するハンドラはonDragFinished です。
drop()も参照してください 。
dragStarted()
このシグナルは、startDrag() メソッドでドラッグが開始されたとき、またはdragType プロパティを使って自動的にドラッグが開始されたときに発せられる。
注: 対応するハンドラはonDragStarted です。
アタッチメソッドのドキュメント
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 プロパティをオーバーライドできます。
© 2026 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.