我正在尝试在挂接到QTreeView
的自定义模型上启用放置。
我已经完成以下工作:
确保在QTreeView
上启用了acceptDrops
在我的自定义模型supportedDropActions
到return Qt::CopyAction | Qt::MoveAction
上实现
在我的自定义模型mimeType
上实现,以返回带有文本/ uri-list的QStringList
在我的自定义模型dropMimeData
上实现,以处理丢弃(如果发生)。
这就是我需要在QTreeWidget
上运行它的全部。
我继续:
对return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
实施的标志
但是,当我运行我的应用程序并尝试将Windows中的文件拖到我的QTreeView
上时,我只是得到了不允许的带有斜线的Ghostbusters风格的圆圈。
我还需要做些什么来启用丢弃功能?
最佳答案
终于我自己弄明白了。
原来的问题是在flags函数中,在索引无效的情况下,我未能返回ItemIsDropEnabled标志。无效索引是根节点的信号,即视图中没有项目的区域,因此空白区域不可放置。
很难检测到这一点,因为我一直在尝试使用drop将项目添加到我的树中,因此没有任何东西可以不进行drop工作,这意味着我看到的只是带有斜线的圆圈。