首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在MoveAction拖放之后QAbstractItemView会删除元素?

为什么在MoveAction拖放之后QAbstractItemView会删除元素?
EN

Stack Overflow用户
提问于 2017-11-03 05:37:09
回答 1查看 184关注 0票数 2

我在QAbstractItemView的源代码中注意到,void startDrag(Qt::DropActions supportedActions)方法在一次类型为MoveAction()的拖动之后调用了一些clearOrRemove()私有函数,这将删除选定的项。

要点是,当在同一视图中发生drop操作时,我的模型使用moveRows()实现该操作,因此这些行被移动,然后clearOrRemove()将它们移除,就像它们是原始行一样。

如何防止最后一次删除?我是否错过了实现move-only模型的惯用方式(即项目可以移动,但不能添加/删除)?

EN

回答 1

Stack Overflow用户

发布于 2020-01-13 16:25:46

我遇到了同样的问题,并找到了一个解决方法:

很可能您已经覆盖了模型的QAbstractItemModel::dropMimeData-method。如果被篡改的mime数据由该方法处理,则该方法应返回true,否则返回false。如果action是一个MoveAction,则技巧是返回false,即使数据被正确处理(在该方法中实现处理)。视图认为拖放不成功,因此不会移除被拖动的项。

也许,在更复杂的设置中,修改返回值会产生一些问题,但它适用于我的简单情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47085034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档