Qt クイックサンプル - ドラッグ&ドロップ
QMLのドラッグ&ドロップのサンプル集です。
ドラッグ&ドロップは、ドラッグ&ドロップ機能に関連する小さなQMLのサンプル集です。詳しくはDrag and Drop のページをご覧ください。
例の実行
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳しくは、Building and Running an Example を参照してください。
タイル
Tilesは、特定のグリッドにドラッグできる単純な矩形にドラッグ&ドロップを追加します。
DragTile コンポーネントがあり、MouseArea を使ってアイテムをドラッグすると移動します:
Item { id: root required property string colorKey required property int modelData width: 64 height: 64 MouseArea { id: mouseArea width: 64 height: 64 anchors.centerIn: parent drag.target: tile onReleased: parent = tile.Drag.target !== null ? tile.Drag.target : root Rectangle { id: tile width: 64 height: 64 anchors { verticalCenter: parent.verticalCenter horizontalCenter: parent.horizontalCenter } color: root.colorKey Drag.keys: [ root.colorKey ] Drag.active: mouseArea.drag.active Drag.hotSpot.x: 32 Drag.hotSpot.y: 32 states: State { when: mouseArea.drag.active AnchorChanges { target: tile anchors { verticalCenter: undefined horizontalCenter: undefined } } } } } }
また、ドラッグしたタイルをドロップできるDropTileコンポーネントもあります:
DropArea { id: dragTarget property string colorKey width: 64 height: 64 keys: [ colorKey ] Rectangle { id: dropRectangle anchors.fill: parent color: dragTarget.containsDrag ? "grey" : dragTarget.colorKey } }
DropArea のkeysプロパティは、Drag.keysプロパティに一致するキーがある場合のみ、アイテムをドロップすることができます。
GridViewの例
GridView の例では、GridView にドラッグ&ドロップを追加し、ListModel を変更することなく、デリゲートを視覚的に並べ替えることができます。この例では、DelegateModel を使用して、デリゲート・アイテムをドラッグされた別のアイテムの位置に移動します。
model: DelegateModel { delegate: DropArea { id: delegateRoot required property color color width: 80 height: 80 onEntered: function(drag) { visualModel.items.move((drag.source as Icon).visualIndex, icon.visualIndex) } property int visualIndex: DelegateModel.itemsIndex Icon { id: icon dragParent: root visualIndex: delegateRoot.visualIndex color: delegateRoot.color } }
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。