我正在尋找一個乾淨和跨平臺的方式來防止掉落的物品從Qt應用程序Windows文件資源管理器(或其他OS當量)的Qt如何防止掉落項目從申請到Windows文件瀏覽器
下圖顯示了所期望的行爲:
我沒有運氣找到在線的例子或黑客一個變通在一起,但似乎這將是一個共同的,足以用例將有一個精心設計和實施的解決方案。
我已經試過,不具備工作:
檢測拖動並殺死它:
- 檢測QDragEnterEvent,QDragMoveEvent,QDragLeaveEvent
- 比較answerRect ()或pos()的事件添加到窗口或小部件的幾何圖形或窗口小部件來檢測拖動是否已離開應用程序
這是非常hacky(而不是在他們工作的時刻),我希望你能指向我一個更優雅的解決方案。
(UPDATE - 試圖改變mime類型,但Windows文件瀏覽器仍然接受下降)
更改MIME類型爲自定義類型:
- 上一篇:從上圖中的「Widget w/Drag & Drop」是
QTreeView
,QFileSystemModel
模型 - 子類的
QFileSystemModel
並重寫mimeTypes()
功能類似下面 - 代碼從
qDebug()
輸出,它看起來像mime類型被正確設定,但Windows文件瀏覽器仍然接受下降:/
- 上一篇:從上圖中的「Widget w/Drag & Drop」是
QStringList MyFileSystemModel::mimeTypes() const { QStringList customMimeTypes; customMimeTypes << QString("UnicornsAndRainbows/uri-list"); qDebug() << "customMimeTypes: " << customMimeTypes; return customMimeTypes; }
請讓我知道,當你有機會。
謝謝! :)
只需將MIME類型填充到任何自定義字符串。 –
檢查'dropEvent'上的'mimeType'後,我發現我的上面的實現是__not__正確設置'mimeType'。我目前在[4.8拖放文檔](http://qt-project.org/doc/qt-4.8/dnd.html)中有一些代碼可用於我的用例,並且在清理完代碼後會發佈我的代碼。謝謝德米特里! :) – GraehamF