Вопрос QDrag и Skype (только победа)

Я пишу небольшой обозреватель файлов и архивов, и у меня возникла проблема с взаимодействием между приложением на основе qt и окном чата Skype только на платформе Windows.

Когда я пытаюсь перетащить файл (предоставленный QDrag с данными MIME-файла) из моего приложения в окно чата Skype, файл отправляется дважды. То же самое я получил, когда пытался изменить один из примеров перетаскивания Qt.

Версия Skype 5.10.0.116. Ошибка воспроизводима на версиях Qt 4.7.3, 4.8.1, 4.8.3.

РЕДАКТИРОВАТЬ:

Пробовал перетаскивать взаимодействия между несколькими приложениями

  • Мое приложение -> Explorer = хорошо
  • Мое приложение -> Notepad ++ = ok (содержимое файла отображается только на одной вкладке)
  • Мое приложение -> WinRar = ok (создает архив с
    только один файл)
  • Мое приложение -> TotalCommander = хорошо
  • Мое приложение -> ICQ = нормально (отправляется только один файл)
  • Мое приложение -> Clementine (музыкальный проигрыватель на основе Qt) = нормально (только один файл
    добавлен в плейлист)
  • Explorer -> Skype = нормально

Но

  • Мое приложение -> Skype — файл отправляется дважды
  • Клементина -> Skype — файл отправляется дважды

EDIT2:

Кроме того, созданные в Mt данные MIME отличаются от созданных проводником.

Qt:

  • 0 «text / uri-list» «file: /// C: /Users/user/Pictures/myfile.ext»
  • 1 «application / x-qt-windows-mime; value =» UniformResourceLocatorW «» «…» (я заменил содержимое QByteArray на многоточие)

Проводник:

  • 0 «application / x-qt-windows-mime; value =» Оболочка IDList Array «» «…»
  • 1 «application / x-qt-windows-mime; value =» UsingDefaultDragImage «» «…»
  • 2 «application / x-qt-windows-mime; value =» DragImageBits «» «…»
  • 3 «application / x-qt-windows-mime; value =» DragContext «» «…»
  • 4 «application / x-qt-windows-mime; value =» DragSourceHelperFlags «» «…»
  • 5 «application / x-qt-windows-mime; value =» InShellDragLoop «» «…»
  • 6 «text / uri-list» «file: /// C: /Users/user/Pictures/myfile.ext»

2

Решение

Я вижу, это не проблема, если Qt, это неправильная обработка данных MIME на стороне Skype. Наряду с «text / uri-list» Qt предоставляет значение «UniformResourceLocatorW» с теми же данными (я не могу этого отрицать, оно добавлено гораздо глубже, чем может получить пользователь Qt). И Skype обрабатывает оба значения — «text / uri-list» и «UniformResourceLocatorW», вызывая отправку одного и того же файла дважды.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]