Ubuntu系统下Qt应用本地文件拖放功能异常及版本适配问题
Qt QML拖放文件到Ubuntu文件系统问题解决
Qt 5.12.12 Ubuntu下无响应修复
Qt 5.x在GTK桌面环境中,text/uri-list的格式要求严格——哪怕是单个文件,也得是带换行符结尾的字符串,否则GNOME Files这类应用识别不了。修改MIME数据定义:
Drag.mimeData: { "text/uri-list": root.fileUrl + "\n" }
另外,Qt 5.12对GTK3的拖放兼容性有已知bug,也可以试试设置环境变量QT_QPA_PLATFORMTHEME=gtk2(系统支持的话)临时规避,但优先用上面的格式调整方案。
Qt 6.4.1的两个问题修复
1. 把复制改成移动操作
默认拖放动作是复制,要实现移动,得明确设置Drag支持的动作,同时添加桌面环境能识别的移动标记:
Drag.supportedActions: Qt.MoveAction Drag.mimeData: { "text/uri-list": root.fileUrl + "\n", // 适配GNOME和KDE的移动标记 "application/x-kde-cutselection": "1", "x-special/gnome-copied-files": "cut\n" + root.fileUrl }
这样桌面环境会识别为移动操作,拖放完成后原文件会被删除。
2. 支持直接拖放到Ubuntu桌面
Ubuntu GNOME桌面的拖放依赖x-special/gnome-copied-files这个MIME类型,上面的配置已经包含了这个字段,添加后就能直接拖到桌面。另外要确保应用有原文件的读取权限和目标目录的写入权限。
内容的提问来源于stack exchange,提问作者Alexander Dyagilev
相关产品推荐
相关产品推荐

