c++ qt drag-and-drop

c++ - Qt Arrastrar y soltar al explorador de Windows: ¿Cómo sé la ruta de destino caída?



drag-and-drop (1)

Lo que trato de hacer es mostrar una vista de lista de archivos en línea, al igual que un cliente FTP enumera todos los archivos en el servidor FTP, y uno puede arrastrar cualquier fila o filas a cualquier carpeta local para guardar los archivos arrastrados allí mismo.

Estoy planeando implementar esto a través de los pasos siguientes:

  1. inicie el evento de arrastre y guarde la ruta de los archivos seleccionados en el servidor [hecho]
  2. subclase clase QMimeData y sobrescribe la función retrieveData tal como lo sugiere este hilo aquí [hecho]
  3. Simplemente termine el proceso de arrastrar y soltar, y encuentre la ruta de destino eliminada , digamos C: / somefolder / subfolder, luego descargue todos los archivos allí, trabajo hecho. 【No hecho】

Pero no pude encontrar ningún lugar para obtener la ruta de destionation descartada, ni siquiera procesando dragEnter / dragMove / dragLeave / drop events. También hice toneladas de búsquedas en Google, encontré algunas preguntas similares pero nunca una respuesta sólida.

Por favor arroja algo de luz sobre esto. ¿Es esta solución incluso factible con QT? ¿Cómo debo obtener la ruta de destino o hay alguna otra forma de lograr este objetivo?


Para cualquiera que esté buscando esto, podría encontrar una respuesta, pero no es fácil y podría depender de la plataforma.

Después de toneladas de (literalmente) búsqueda, encontré una solución en el código fuente de FileZilla , resulta que para hacer frente a dicha situación, necesita:

  1. necesita una extensión de shell para supervisar (o lo que sea) el proceso de arrastre
  2. comienza un arrastre y soltar normal
  3. cuando se suelta el mouse, simplemente no hagas nada, deja que termine todo el proceso de arrastrar y soltar
  4. a través de la extensión de shell, puede obtener la ruta de destino real y simplemente descargar sus archivos allí.

para obtener detalles técnicos, visite el sitio web oficial de FileZilla

Creo que esto es solo para Windows, si alguien obtiene la respuesta para otras plataformas, ¡por favor hágamelo saber!