我正在使用带有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
?还有其他选择吗?
答案 0 :(得分:0)
您必须分别为每一行调用beginMoveRows()和endMoveRows()。否则,QML渲染器无法检测它应该绘制移动动画的行。
或者你可以使用像beginResetModel()这样的东西,但这很难看,你会失去漂亮的动画。