我正在尝试启用我已连接到的自定义模型 QTreeView
.
我做了以下工作:
QTreeView
上启用了 acceptDrops supportedDropActions
至 return Qt::CopyAction | Qt::MoveAction
mimeType
s 返回 QStringList
带有文本/uri 列表 dropMimeData
处理下降,如果它曾经发生过。 这就是我让它在
QTreeWidget
上工作所需的全部内容.我继续:
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
尽管如此,当我运行我的应用程序并尝试将 Windows 中的文件拖到我的
QTreeView
上时,我只是得到那个不允许用斜线穿过它的捉鬼敢死队风格的圆圈。我还需要做什么才能启用滴剂?
最佳答案
终于自己弄明白了这个。
原来问题是在 flags 函数中,在索引无效的情况下,我未能返回 ItemIsDropEnabled 标志。无效索引是根节点的信号,即没有项目的 View 区域,因此空白空间不可放置。
这很难检测到,因为我一直在尝试使用 drop 将项目添加到我的树中,所以没有 drop 工作,这意味着我所看到的只是带有斜线的圆圈。
关于Qt自定义模型需要做什么才能启用drop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355510/