El problema que tienes es que no sabes cómo funciona la edición por debajo.
Al editar una celda lo que sucede es que se crea un widget que, por defecto, se va a superponer a la celda a editar, de tal forma que al usuario le da la impresión de que está escribiendo sobre la propia celda... pero no es así. Dicho widget de edición se carga dentro de un contenedor que es ese
viewport que comentas.
En cuanto al tema del tabulador en edición, yo probaría a hacer algo tal que:
Código C++:
Ver originalvoid MiDelegado::closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint)
{
if (hint == QAbstractItemDelegate::EditNextItem && currentColumn() == 1)
hint = QAbstractItemDelegate::EditPreviousItem;
else if (hint == QAbstractItemDelegate::EditPreviousItem && currentColumn() == 0)
hint = QAbstractItemDelegate::EditNextItem;
[ClaseBase]::closeEditor(editor, hint); // Sustuir [ClaseBase]
}