2015-10-16 16 views
5

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: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?

Trả lời

0

Tôi sẽ sử dụng một cái gì đó như:

Drag.mimeData: { "text/uri-list": "http://localhost:8080/datarepository?id=12345" } 

và sau đó tôi sẽ làm cho có sẵn dữ liệu yêu cầu trên một máy chủ HTTP trong ứng dụng (mà sau đó có thể dễ dàng trích xuất các đối tượng có ID bằng 12345 trong ví dụ của tôi từ DB) ... (một khi hoạt động sao chép đã bắt đầu, tôi không nghĩ rằng đó là một sự xấu hổ nếu người dùng của bạn chờ một vài giây trong khi hệ thống trích xuất đối tượng từ DB).

+0

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. –

Các vấn đề liên quan