簡體   English   中英

從QTreeView拖放到QListView,並在Qt5中復制文件

[英]Drag and drop from QTreeView to QListView with file copy in Qt5

我嘗試從Treeview(模板目錄)到Listview(項目目錄)進行拖放。 我讀到最好的解決方案是從Model實現mimeData()和dropMimeData()。 目前,我不知道要在函數中放入什么,而我的測試僅適用於拖動。

我將它們設置為:

樹視圖 :

  • 模型= QFileSystemModel(模板路徑)
  • dragEnable = true
  • dragDropMode = dragOnly
  • defaultDropAction = copyAction

列表顯示 :

  • 模型= QFileSystemModel(項目路徑),其中ReadOnly = false
  • dragDropMode = dropOnly
  • sefaultDropAction = copyAction

如果拖動已經在起作用,則對於拖放,您應該重新實現接收QWidget的dragEnterEvent()dropEvent()事件處理函數。

我以前做過這樣的事情。

void SomeClass::dragEnterEvent(QDragEnterEvent *e)
{
    e->acceptProposedAction();
}

void SomeClass::dropEvent(QDropEvent *e)
{
    //read mimeData() from QDropEvent
}

此處的文檔中有一個非常清晰的示例: http : //doc.qt.io/qt-5/dnd.html

PD。 正如我之前在評論中提到的,不要忘記將acceptDrops設置為true。

無需重新實現事件:

setAcceptDrops(true)足以進行拖放,並且文件自動復制。

我的第一個測試無法正常工作,但是經過重新編譯后情況會變得更好。 感謝幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM