Drag QML Type (Uncreatable)
移動されたアイテムのドラッグ&ドロップイベントを指定するために使用します。詳細...
| Import Statement: | import QtQuick |
注:これは生成不可能な型です。QML ではインスタンス化できません。
関連プロパティ
- 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」アタッチドプロパティを使用することで、シーン内の任意のアイテムをドラッグ&ドロップイベントの発生元とすることができます。
アイテムに対して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 の例 - ドラッグ&ドロップ」も参照してください 。
添付プロパティのドキュメント
Drag.active : bool [read-only attached]
このプロパティは、ドラッグイベントシーケンスが現在アクティブであるかどうかを表します。
このプロパティをMouseArea::drag のactiveプロパティにバインドすると、ユーザーがドラッグを開始した際にstartDrag が呼び出されます。
このプロパティを true に設定すると、アイテムの現在の位置情報を伴う QDragEnter イベントがシーンに送信されます。false に設定すると、QDragLeave イベントが送信されます。
ドラッグがアクティブな間、アイテムの位置に変化があると、アイテムの新しい位置を含む QDragMove イベントがシーンに送信されます。
Drag.dragType : enumeration [attached]
このプロパティは、ドラッグを自動的に開始するか、何もしないか、あるいは下位互換性のある内部ドラッグを使用するかを指定します。デフォルトは、下位互換性のある内部ドラッグを使用する設定です。
また、startDrag を使用することで、ドラッグを手動で開始することもできます。
| 定数 | 説明 |
|---|---|
Drag.None | ドラッグを自動的に開始しない |
Drag.Automatic | ドラッグを自動的に開始する |
Drag.Internal | (デフォルト) 後方互換性のあるドラッグを自動的に開始する |
Drag.Automatic を使用する場合は、mimeData も定義し、active プロパティをMouseArea のactiveプロパティにバインドする必要があります:MouseArea::drag.active
Drag.hotSpot : point [attached]
このプロパティは、アイテムの左上を基準としたドラッグ位置を保持します。
デフォルトでは、これは (0, 0) です。
hotSpotが変更されると、更新された位置で新たなドラッグ操作が開始されます。
Drag.imageSource : url [attached]
このプロパティには、ドラッグ&ドロップ操作中にデータを表すために使用される画像の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 [attached, 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 [attached]
このプロパティには、DropArea がドラッグイベントをフィルタリングするために使用できるキーのリストが格納されています。
ドラッグがアクティブな状態でキーを変更すると、ドラッグ終了イベントが送信された後、新しいソースを指定したドラッグ開始イベントが送信され、ドラッグイベントのシーケンスがリセットされます。
Drag.mimeData : var [attached]
このプロパティは、startDrag の処理中に使用される、MIMEタイプからデータへの対応付けを保持します。 MIMEデータは、MIMEタイプと一致する形式(例:MIMEタイプが「text/plain」の場合は文字列、MIMEタイプが「image/png」の場合は画像)であるか、MIMEタイプに従ってエンコードされたデータを含むArrayBuffer である必要があります。
Drag.proposedAction : enumeration [attached]
このプロパティには、ドラッグソースが Drag.drop() の戻り値として推奨するアクションが格納されます。
proposedAction が変更されると、更新された提案を含む移動イベントが発生します。
Drag.source : Object [attached]
このプロパティは、ドラッグイベントの受信者に対して、そのイベントの発生元として識別されるオブジェクトを保持します。デフォルトでは、これは Drag プロパティがアタッチされているアイテムです。
ドラッグがアクティブな状態でソースを変更すると、ドラッグ離脱イベントが送信された後、新しいソースを指定したドラッグ開始イベントが送信され、ドラッグイベントのシーケンスがリセットされます。
Drag.supportedActions : flags [attached]
このプロパティには、ドラッグソースがサポートするdrop()の戻り値が格納されます。
ドラッグがアクティブな状態で supportedActions を変更すると、ドラッグ終了イベントが送信された後、新しいソースを指定したドラッグ開始イベントが送信され、ドラッグイベントのシーケンスがリセットされます。
Drag.target : Object [attached]
ドラッグがアクティブな間、このプロパティには、ドラッグされたアイテムからの「enter」イベントを受け入れた最後のオブジェクトが格納されます。現在のドラッグ位置が、イベントを受け入れるターゲットと重なっていない場合は、null になります。
ドラッグがアクティブでない場合、このプロパティには、ドラッグを終了させたドロップイベントを受け入れたオブジェクトが保持されます。ドロップイベントを受け入れたオブジェクトがない場合や、ドラッグがキャンセルされた場合は、ターゲットは null になります。
添付のシグナルに関するドキュメント
[attached] dragFinished(DropAction dropAction)
このシグナルは、ドラッグが終了し、そのドラッグがstartDrag()メソッドによって開始されたか、dragType プロパティを使用して自動的に開始された場合に発火します。
dropAction ターゲット項目によって受け入れられたアクションを保持します。
注: 対応するハンドラは onDragFinished です。
drop()も参照してください 。
[attached] dragStarted()
このシグナルは、startDrag() メソッドを使用してドラッグが開始されたとき、またはdragType プロパティを使用して自動的にドラッグが開始されたときに発火します。
注: 対応するハンドラは onDragStarted です。
関連するメソッドのドキュメント
[attached] void cancel()
ドラッグ操作を終了します。
[attached] enumeration drop()
ターゲットアイテムにドロップイベントを送信して、ドラッグ操作を終了します。
ターゲットアイテムが受け入れたアクションを返します。ターゲットアイテムまたはその親がドロップイベントを受け入れない場合、Qt.IgnoreActionが返されます。
返されるドロップアクションは、以下のいずれかになります。
| 定数 | 説明 |
|---|---|
Qt.CopyAction | データをターゲットにコピーする |
Qt.MoveAction | データをソースからターゲットへ移動する |
Qt.LinkAction | ソースからターゲットへのリンクを作成する。 |
Qt.IgnoreAction | アクションを無視する(データに対して何もしない)。 |
[attached] void start(flags supportedActions)
ドラッグイベントの送信を開始します。旧式の内部ドラッグを開始するために使用されます。startDrag は、ドラッグを開始するための新式かつ推奨される方法です。
オプションの引数 `supportedActions ` を使用すると、開始されたシーケンスの `supportedActions ` プロパティを上書きすることができます。
[attached] 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.