我正在写一个小文件/档案资源pipe理器,只有在Windows平台上的基于qt的应用程序和Skype聊天窗口之间的交互问题。
当我尝试从我的应用程序拖放文件(由QDrag提供的文件的URL MIME数据)到Skype聊天窗口,文件被发送两次。 当我尝试修改一个Qt拖放示例时,也是一样的。
Skype版本是5.10.0.116。 Bug在Qt版本4.7.3,4.8.1,4.8.3上是可重现的。
编辑:
将任何东西拖到桌面上
是否有可能在C#中拖放而不将源移动到目标?
已经尝试了几个应用程序之间的拖放式交互
我的应用程序 – >资源pipe理器=好
我的应用程序 – > Notepad ++ = ok(仅在一个选项卡中显示文件的内容)
我的应用程序 – > WinRar = ok(创build只有一个文件的存档)
我的应用程序 – > TotalCommander =确定
我的应用程序 – > Clementine(基于Qt的音乐播放器)= ok(只有一个文件被添加到播放列表中)
资源pipe理器 – > Skype =确定
但
我的应用程序 – > Skype – 文件被发送两次
Clementine – > Skype – 文件被发送两次
EDIT2:
此外,qt创build的MIME数据不同于由资源pipe理器创build。
Qt的:
0“text / uri-list”“file:/// C:/Users/user/Pictures/myfile.ext”
1“application / x-qt-windows-mime; value =”UniformResourceLocatorW“”“…”(我用省略号replace了QByteArray的内容)
资源pipe理器:
0“application / x-qt-windows-mime; value =”Shell 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”
我看,如果Qt,这是不是一个问题,这是在Skype方面的错误数据处理。 与“text / uri-list”一起,Qt提供了“UniformResourceLocatorW”值和相同的数据(我不能否认它,它比Qt用户可以得到的更深)。 Skype处理两个值 – “text / uri-list”和“UniformResourceLocatorW”,导致两次发送相同的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。