Qt 将文件从应用程序拖动到资源管理器。我的申请可以复印吗?

Qt 将文件从应用程序拖动到资源管理器。我的申请可以复印吗?,qt,drag-and-drop,qml,qtquick2,Qt,Drag And Drop,Qml,Qtquick2,在Qml中,我可以使用text/uri列表mime类型启动拖动,以便启动从我的应用程序到文件浏览器的复制操作,例如 Item { id: draggable anchors.fill: parent Drag.active: mouseArea.drag.active Drag.hotSpot.x: 0 Drag.hotSpot.y: 0

在Qml中,我可以使用
text/uri列表
mime类型启动拖动,以便启动从我的应用程序到文件浏览器的复制操作,例如

        Item {
            id: draggable
            anchors.fill: parent
            Drag.active: mouseArea.drag.active
            Drag.hotSpot.x: 0
            Drag.hotSpot.y: 0
            Drag.mimeData: { "text/uri-list": "file:///home/myname/Desktop/avatar.jpeg" }
            Drag.supportedActions: Qt.CopyAction
            Drag.dragType: Drag.Automatic
            Drag.onDragStarted: { }
            Drag.onDragFinished: {
                console.log("Time to copy")
            }
        } // Item

(另见)

在给定
文件:
http:
uri的情况下,这可以很好地工作

但是,我的真实数据不能作为URI使用,而是存储在数据库中。我无法快速存储到temp,因为这可能需要几秒钟,用户不希望在开始拖动时出现延迟

是否有可能在删除后获取目标URI并自己进行复制?或者只能由目标进行复制


在后一种情况下,是否需要通过内部HTTP服务器提供数据?我怎么知道Linux、Windows和OS X上的文件浏览器支持哪种URI方案呢?

我会使用类似的方法:

Drag.mimeData: { "text/uri-list": "http://localhost:8080/datarepository?id=12345" }

然后,我将在应用程序内的HTTP服务器上提供请求的数据(然后可以轻松地从DB中提取ID等于
12345
的对象)。。。(一旦复制操作开始,我不认为如果您的用户在系统从数据库提取对象时等待几秒钟是一件丢脸的事情)。

是的,如果真的没有更好的方法,那么必须这样做。数据甚至可以从数据库流式传输到HTTP服务器,因此根本不需要等待。如果我完成了,我想我会在我的实现上添加一篇详细的博客文章。在那之前,我仍然希望有一个更简单的把戏。
Drag.mimeData: { "text/uri-list": "http://localhost:8080/datarepository?id=12345" }