私は小さなファイル/アーカイブ エクスプローラーを作成していますが、qt ベースのアプリと Windows プラットフォームでの Skype チャット ウィンドウの間のやり取りで問題が発生しました。
アプリから Skype チャット ウィンドウにファイル (ファイル URL の MIME データを含む QDrag によって提供される) をドラッグ アンド ドロップしようとすると、ファイルが 2 回送信されます。Qtのドラッグアンドドロップの例の1つを変更しようとしたときに得たのと同じです。
Skype のバージョンは 5.10.0.116 です。バグは Qt バージョン 4.7.3、4.8.1、4.8.3 で再現可能です。
編集:
複数のアプリ間でドラッグ アンド ドロップ操作を試した
- マイ アプリ -> エクスプローラー = OK
- My app -> Notepad++ = ok (ファイルの内容を 1 つのタブにのみ表示)
- My app -> WinRar = ok (1 つのファイルのみでアーカイブを作成)
- 私のアプリ -> TotalCommander = OK
- My app -> ICQ = ok (1 つのファイルのみが送信されます)
- マイ アプリ -> Clementine (Qt ベースの音楽プレーヤー) = OK (プレイリストに 1 つのファイルのみが追加されます)
- エクスプローラー -> スカイプ = OK
しかし
- マイ アプリ -> Skype - ファイルが 2 回送信される
- Clementine -> Skype - ファイルが 2 回送信される
EDIT2:
また、qt で作成された 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 配列"" "..."
- 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"