我尝试从Treeview(模板目录)拖放到Listview(项目目录)。我读到最好的解决方案是从Model实现mimeData()和dropMimeData()。现在,我不知道在函数中放什么,我的测试只适用于拖动。
我将它们设置为:
Treeview:
Listview:
答案 0 :(得分: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。
答案 1 :(得分:0)
无需重新实现事件:
setAcceptDrops(true)足以进行拖放操作,文件副本会自动生成。
我的第一次测试不起作用,但经过干净的重新编译后情况会好转。 谢谢你的帮助