【问题标题】:How to implement a drag'n drop from a qt application to a file system folder?如何实现从 qt 应用程序拖放到文件系统文件夹?
【发布时间】:2011-08-16 19:23:12
【问题描述】:

我正在 Mac OS X (Snow Leopard) 上开发一个 Qt 应用程序,它将一个大文件的数据显示到一个视图中。我可以使用菜单的“提取”条目将这些数据提取到文件系统文件夹中,现在,我想通过拖放来提取它们。

我尝试实现一个自定义的 QMimeData,它的受保护方法 retrieveData 就像这张票的解决方案:Qt 4.x: how to implement drag-and-drop onto the desktop or into a folder?)。 在这种方法中,我将数据提取到 tmp 文件夹中,并返回 tmp 文件的路径。 不幸的是,这个方法在拖放开始时被调用,并在此时提取我的数据(即使用户没有拖放这些数据)。

如何使用 Qt 拖放到 Mac OS X 上的文件系统文件夹?

【问题讨论】:

    标签: qt macos drag-and-drop


    【解决方案1】:

    这是 Qt 拖放方案中的一个明显问题:它不提供与 OS X 的“承诺数据”拖动等效的功能。而且真的没有很好的方法来解决它。拖动代码不知道放置的位置,因此无法在事后复制数据。正如您所发现的,在拖动开始时立即调用检索数据,这在准备数据需要很长时间时无济于事。

    现在我想说用特定于平台的代码来破解它是唯一的方法。不幸的是,我没有这方面的经验。

    【讨论】:

    • 太诱人了...查看 Qt 5.5 源代码,我可以看到 qmacclipboard.mm 调用了 PasteboardSetPromiseKeeper(),但我还不知道如何利用它。跨度>
    猜你喜欢
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2012-02-29
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多