qt QAbstractItemModel拖放移动项目执行删除/插入

时间:2016-10-31 18:01:13

标签: c++ qt

我创建了一个派生自QAbrstractItemModel的类,以显示在QTreeView下。我需要拖放操作来用鼠标重新排序项目。

但是,我注意到,当我这样做时,通过删除索引然后在新位置下创建新索引来移动项目。但我重新实现了moveRows()方法。

有什么不对?或者这是预期的行为?

1 个答案:

答案 0 :(得分:2)

问题在于Qt 5中引入了moveRows(及其所有伴随函数)。对QAbstractItemModel子类的拖放支持来自Qt 4,甚至在Qt 5中,遗憾的是它仍然包含一个插入+删除,因为当他们移植到Qt 5时我们不想打破Qt 4项目。

因此,Qt 5不会使用moveRows(例如,见here)。

从长远来看,Qt需要找到一种方法来利用模型上的移动操作,必须作为选择加入功能(我们不能破坏代码!)。问题是“谁将做这项巨大的工作”......

相关问题