2015-10-16 3 views
5

W Qml mogę rozpocząć przeciąganie przy użyciu mime typu text/uri-list, aby rozpocząć działanie kopiowania z mojej aplikacji do eksploratora plików, np.Przeciągnij plik z aplikacji do eksploratora. Czy moja aplikacja może kopiować?

 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 

lub

 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 

(patrz także Qt Quick Examples - externaldraganddrop)

to działa prawidłowo podano file: i http: URI.

Jednak moje prawdziwe dane nie są dostępne jako URI, ale są przechowywane w bazie danych. Nie mogę szybko zapisać do temp, ponieważ może to zająć sekundy, a użytkownik nie chce opóźnienia w momencie, gdy zaczyna przeciągać.

Czy w jakiś sposób można uzyskać docelowy identyfikator URI po upuszczeniu i samemu wykonać kopię? Czy tylko cel może wykonać kopiowanie?

Czy w późniejszym przypadku muszę udostępnić swoje dane za pośrednictwem wewnętrznego serwera HTTP? Jak mogę się dowiedzieć, który schemat URI jest obsługiwany przez przeglądarki plików w systemach Linux, Windows i OS X?

Odpowiedz

0

chciałbym użyć czegoś takiego:

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

i wtedy będę udostępnienia żądanych danych na serwerze HTTP w zgłoszeniu (które następnie można łatwo wyodrębnić przedmiot posiadający identyfikator równy 12345 w moim przykładzie od DB) ... (kiedy operacja kopiowania się zaczęła, nie sądzę, że to wstyd, jeśli twój użytkownik czeka kilka sekund, podczas gdy system wyodrębnia obiekt z DB).

+0

Cóż, tak, jeśli naprawdę nie ma lepszego sposobu, to trzeba to zrobić. Dane można nawet przesyłać strumieniowo z bazy danych do serwera HTTP, więc nie trzeba czekać. Myślę, że dodam szczegółowy blog na temat mojej implementacji, jeśli skończę. Do tego czasu wciąż mam nadzieję na prostszą sztuczkę. –

Powiązane problemy