2011-05-02 72 views
2

我正在Mac OS X(Snow Leopard)上開發Qt應用程序,它將大文件的數據顯示到視圖中。我可以將這些數據提取到帶有「提取」菜單的文件系統文件夾中,現在,我想用拖放操作將它們提取出來。如何實現從qt應用程序拖放到文件系統文件夾?

我試圖實現一個自定義QMimeData,其受保護的方法retrieveData像這張票的解決方案:Qt 4.x: how to implement drag-and-drop onto the desktop or into a folder?)。 在這種方法中,我將數據提取到一個tmp文件夾中,並返回tmp文件的路徑。 不幸的是,這個方法在drag'n drop的開始時被調用,並在這個時候提取我的數據(即使用戶不會丟棄這些數據)。

如何用Qt拖放到Mac OS X上的文件系統文件夾?

回答

2

這是Qt拖放方案中一個明顯的問題:它沒有提供相當於OS X的「承諾數據」拖動。真的沒有什麼好辦法解決它。拖動代碼沒有通知放置位置,因此在事實之後無法複製數據。正如你發現的那樣,檢索數據在拖動開始的時候被調用,這在準備數據需要很長時間時沒有幫助。

現在我想說的是用特定於平臺的代碼來攻擊它是唯一的方法。不幸的是,我對此沒有任何經驗。

+0

這很誘人...看看Qt 5.5源代碼我可以看到qmacclipboard.mm調用了PasteboardSetPromiseKeeper(),但我還不知道如何利用它。 – 2015-10-02 15:38:34

相關問題