Efectivamente. Para esa funcionalidad tienes que interceptar la pulsación del tabulador.
Esto lo puedes hacer heredando la tabla o mediante un filtro de eventos. Yo personalmente te recomendaría esta segunda opción:
Código C++:
Ver originalclass Filter : public QObject
{
Q_OBJECT;
public:
bool eventFilter(QObject *object, QEvent *event) override;
};
bool Filter::eventFilter(QObject *object, QEvent *event)
{
QTableView* table = dynamic_cast<QTableView*>(object);
if( !table ) return false;
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Tab)
{
QModelIndex current = table->currentIndex();
if( current.column() != table->model()->columnCount() )
{
QModelIndex newIndex = table->model()->index(current.row(),current.column()+1);
table->selectionModel()->select(newIndex,QItemSelectionModel::ClearAndSelect);
return true;
}
}
}
return false;
}
Y para usarlo:
Código C++:
Ver originalFilter* filter = new Filter;
QTableView* table /* ... */;
table->installEventFilter(filter);