如何将beginMoveRows与备用索引一起使用

时间:2015-02-01 20:17:45

标签: c++ qt qt4 qml qt5

我正在使用带有QAbstractItemModel(c ++)和QTableView(QML)的自定义GridView。我的模型允许多行选择,包括备选(f.e:hold CTRL)。

我已经实现了Drag& Drop用于求助物品。当选择具有不连续的项目时,我以这种方式调用beginMoveRows

beginMoveRows(parent, mySeletectedIndexes.first(), mySelectedIndexes.last(), parent, destRow)

这适用于QTableView,但GridView正在移动mySeletectedIndexes.first()和mySeletectedIndexes.last()之间的所有项目,即使那些不被移动的项目也是如此。这会导致模型和视图之间的不一致。

在这种情况下我应该如何使用beginMoveRows?还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您必须分别为每一行调用beginMoveRows()和endMoveRows()。否则,QML渲染器无法检测它应该绘制移动动画的行。

或者你可以使用像beginResetModel()这样的东西,但这很难看,你会失去漂亮的动画。