【发布时间】:2017-11-02 21:37:09
【问题描述】:
我注意到QAbstractItemView 的源代码中,void startDrag(Qt::DropActions supportedActions) 方法在类型为MoveAction() 的拖动后调用了一些clearOrRemove() 私有,这会删除选定的项目。
重点是,当放置动作发生在同一个视图中时,我的模型使用moveRows() 实现该动作,因此行被移动,然后clearOrRemove() 将它们删除,就好像它们是原始行一样。
如何防止最后一次删除?我是否错过了实现仅移动模型的惯用方式(意味着可以移动项目但不能添加/删除)?
【问题讨论】:
-
我认为问题在于
moveRows是一个Qt 5 API,并且DND 在Qt 中通过insert+remove 实现了4 次... -
你的意思是它会是一个错误?他们不是调整了 DnD API 吗? Qt 4 如何实现 MoveAction?
-
正如我所说,通过插入/删除。我不确定它是否符合错误的条件,因为 Qt 4 软件在移植到 Qt 5 时仍然可以工作(这样的旧软件不会覆盖
moveRows,因为它当时不存在。 ..)。但是请务必提交一份错误报告,以便在那里进行讨论。
标签: qt drag-and-drop qabstractitemmodel qabstractitemview