Qmlでは、アプリケーションからファイルエクスプローラへのコピーアクションを開始するために、text/uri-list
mimeタイプを使用してドラッグを開始できます。ファイルをアプリケーションからエクスプローラにドラッグします。私のアプリケーションはコピーを行うことはできますか?
Item {
id: draggable
anchors.fill: parent
Drag.active: mouseArea.drag.active
Drag.hotSpot.x: 0
Drag.hotSpot.y: 0
Drag.mimeData: { "text/uri-list": "file:///home/myname/Desktop/avatar.jpeg" }
Drag.supportedActions: Qt.CopyAction
Drag.dragType: Drag.Automatic
Drag.onDragStarted: { }
Drag.onDragFinished: {
console.log("Time to copy")
}
} // Item
または
Item {
id: draggable
anchors.fill: parent
Drag.active: mouseArea.drag.active
Drag.hotSpot.x: 0
Drag.hotSpot.y: 0
Drag.mimeData: { "text/uri-list": "https://farm1.staticflickr.com/713/21777111068_e3310cfb94_k.jpg" }
Drag.supportedActions: Qt.CopyAction
Drag.dragType: Drag.Automatic
Drag.onDragStarted: { }
Drag.onDragFinished: {
console.log("Time to copy")
}
} // Item
(もQt Quick Examples - externaldraganddrop参照)
これは罰金与えfile:
とhttp:
URIを動作します。
私の実際のデータはURIとしては利用できませんが、データベースに保存されています。私はすぐに一時的に保存することができません。これは数秒かかる可能性があり、ユーザーはドラッグを開始する瞬間に遅延を望んでいないからです。
ドロップ後にターゲットURIを取得して自分でコピーすることは何とかできますか?または、ターゲットだけがコピーを実行できますか?
後者の場合、内部HTTPサーバー経由でデータを利用できるようにする必要はありますか?どのURIスキームがLinux、Windows、OS X上のファイルブラウザでサポートされているかを知るにはどうすればよいですか?
本当に良い方法がない場合は、これを行う必要があります。データをデータベースからHTTPサーバにストリーミングすることもできるので、待機する必要はありません。完了したら私の実装に詳細なブログポストを追加すると思います。それまでは、私はまだ簡単なテクニックを望んでいます。 –