[PyQt] Re: Tab key navigation in QtableView

Nicolas Girard nicolas.girard at nerim.net
Tue Sep 25 23:39:15 BST 2007


On Tue, 15 May 2007 11:55:35 +0100, joanne matthews (RRes-Roth) wrote:
> Can anyone explain why in the PyQt example queryModel.pyw, pressing tab
> after editing a cell in the qtableview displayed by EditableSqlModel,
> the current index is set to 0,0? I'd like to use the example for
> something similar but after editing a cell and pressing tab, I'd like
> the cursor to go to the next cell.

I could find a solution to this, after having a look into the Qt sources.

In editing mode, pressing tab makes QAbstractItemView.closeEditor() call
QAbstractItemView.moveCursor(MoveNext, Qt::NoModifier).

With this in mind, we can reimplement QAbstractItemView.moveCursor such as:

    def moveCursor (self, cursorAction, modifiers ):
        if cursorAction==QtGui.QAbstractItemView.MoveNext 
            and modifiers==QtCore.Qt.NoModifier:
            ix=self.currentIndex()
            (col, row, parent)=(ix.column(), ix.row(), ix.parent())
            if col < self.model().columnCount(parent)-2:
                return self.model().index(row, col+1, parent)
        return QtGui.QTreeView.moveCursor(self, cursorAction,  modifiers)

Hope that helps,
Cheers,
Nicolas


More information about the PyQt mailing list