1

我尝试从 Treeview(模板目录)拖放到 Listview(项目目录)。我读到最好的解决方案是从模型中实现 mimeData() 和 dropMimeData()。现在,我不知道在函数中放什么,我的测试只适用于拖动。

我将它们设置为:

树视图 :

  • model = QFileSystemModel(模板路径)
  • 拖动启用 = 真
  • dragDropMode = dragOnly
  • defaultDropAction = 复制动作

列表显示 :

  • 模型 = QFileSystemModel(项目路径),ReadOnly=false
  • dragDropMode = dropOnly
  • sefaultDropAction = 复制操作
4

2 回答 2

0

如果拖拽已经在工作,为了放置你应该重新实现接收 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。

于 2015-04-21T18:21:59.597 回答
0

无需重新实现事件:

setAcceptDrops(true) 足以使拖放,并且文件副本是自动进行的。

我的第一次测试没有用,但经过干净的重新编译后情况会好转。感谢帮助

于 2015-04-23T17:46:28.580 回答