【发布时间】:2011-11-02 11:01:05
【问题描述】:
我有一个可以在 Linux 和 Windows 上运行的 Qt 桌面应用程序。在某个时候,我也希望将它移植到 MacOS X 和其他 *nix 系统。
我的问题是,应用程序的一部分具有允许用户将文件拖放到存档中和从存档中取出的功能。 UI 有点像 WinZip 或类似的基于 GUI 的存档器。但是 Qt 的拖放系统希望在用户开始从存档中拖动文件时准备好数据。
我目前所做的是,将拖动的文件提取到一个临时位置,并将这些文件名作为数据提供。但这是不可取的,因为提取深层目录树需要大量时间,并且会导致 GUI 在此期间冻结。如果我可以在用户决定drop 文件时执行该操作,而不是在他/她开始drag 时执行该操作,那就太好了。不幸的是,Qt 文档没有说明这一点。
我知道如何使用 Windows API 来实现这一点,而且我很确定大多数系统也有办法做到这一点。但我想尽可能避免编写特定于平台的代码。
有没有 Qt 方法来实现这一点?我错过了什么吗?
【问题讨论】:
标签: qt drag-and-drop