Trong Qml tôi có thể bắt đầu kéo bằng cách sử dụng loại mime text/uri-list
để bắt đầu tác vụ sao chép từ ứng dụng của tôi vào trình khám phá tệp, ví dụ:Kéo tệp từ ứng dụng vào trình khám phá. Ứng dụng của tôi có thể sao chép không?
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
hoặc
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
(xem thêm Qt Quick Examples - externaldraganddrop)
này hoạt động tốt cho file:
và http:
URI.
Tuy nhiên, dữ liệu thực của tôi không có sẵn dưới dạng URI nhưng được lưu trữ trong cơ sở dữ liệu. Tôi không thể nhanh chóng lưu trữ tạm thời vì điều đó có thể mất vài giây và người dùng không muốn có sự chậm trễ trong thời điểm bắt đầu kéo.
Có thể nào đó có thể lấy URI đích sau khi thả và tự sao chép không? Hoặc chỉ có thể làm mục tiêu sao chép?
Trong trường hợp sau, tôi có cần cung cấp dữ liệu của mình qua HTTP-Server bên trong không? Làm cách nào để tôi biết lược đồ URI nào được hỗ trợ bởi trình duyệt tệp trên Linux, Windows và OS X?
Vâng vâng, nếu thực sự không có cách nào tốt hơn, điều này phải được thực hiện. Dữ liệu thậm chí có thể được truyền trực tiếp từ cơ sở dữ liệu vào HTTP-Server để không còn chờ đợi nữa. Tôi nghĩ rằng tôi sẽ thêm một blogpost chi tiết về việc triển khai của tôi nếu tôi hoàn thành. Cho đến lúc đó tôi vẫn hy vọng cho một mẹo đơn giản hơn. –