Thank you, this solves the problem!
Here is a simple implementation (not covering the cases where the next/previous index has a different parent):
def moveCursor(self, cursorAction, modifiers):
index = self.currentIndex()
if index.isValid():
if index.column()+1 < self.model().columnCount():
return index.sibling(index.row(), index.column()+1)
elif index.row()+1 < self.model().rowCount(index.parent()):
return index.sibling(index.row()+1, 0)
else:
index = self.currentIndex()
if index.isValid():
if index.column() >= 1:
return index.sibling(index.row(), index.column()-1)
elif index.row() >= 1:
return index.sibling(index.row()-1, self.model().columnCount()-1)
else:
super().moveCursor(cursorAction, modifiers)
def moveCursor(self, cursorAction, modifiers):
if cursorAction == QtWidgets.QAbstractItemView.MoveNext:
index = self.currentIndex()
if index.isValid():
if index.column()+1 < self.model().columnCount():
return index.sibling(index.row(), index.column()+1)
elif index.row()+1 < self.model().rowCount(index.parent()):
return index.sibling(index.row()+1, 0)
else:
return QtCore.QModelIndex()
elif cursorAction == QtWidgets.QAbstractItemView.MovePrevious:
index = self.currentIndex()
if index.isValid():
if index.column() >= 1:
return index.sibling(index.row(), index.column()-1)
elif index.row() >= 1:
return index.sibling(index.row()-1, self.model().columnCount()-1)
else:
return QtCore.QModelIndex()
super().moveCursor(cursorAction, modifiers)
To copy to clipboard, switch view to plain text mode
Bookmarks