Так, ну с пустым местом от таблицы разобрался-- надо было не скрывать столбцы и строки, а удалять. Возможно когда просто они просто скрываются, то SizeHint() "думает", что таблица не менялась и оставляет все как было. А вот с переопределением обработки нажатия клавиш фигня получается. Написал я вот такой код:
bool MyTable:: event(QEvent *event)
{
if(event->type()== QEvent::KeyPress)
{
QKeyEvent* keyEvent = (QKeyEvent*) event;
if(keyEvent->key() == Key_Enter)
{
int nCurRow= currentRow ();
int nCurCol= currentColumn();
endEdit ( nCurRow, nCurCol, true, false );
if((nCurRow==MyTable::Rows-1)&&(nCurCol==MyTable::Columns-1))
{
setCurrentCell (0,0);
return true;
}
if(nCurCol==MyTable::Columns-1)
{
nCurRow++;
nCurCol=-1;
}
setCurrentCell (nCurRow,++nCurCol );
return true;
}
}
return QWidget:: event(event);
}
И теперь, когда фокус ввода находится в таблице при нажатии Enter
он действительно переходит между ячейками слева направо, только вот когда я изменяю содержимое ячейки и нажимаю Enter фокус как и раньше движется сверху вниз :twisted: