Я после добавления новых строк вызываю подобное:
C++ (Qt)
void setVisibleCurrentIndex( QAbstractItemView* v )
{
QScrollBar* hbar = v->horizontalScrollBar();
int hbar_value = hbar->value();
bool hbar_blocked = hbar->signalsBlocked();
if( !hbar_blocked )
hbar->blockSignals( true );
hbar->setUpdatesEnabled( false );
v->scrollTo( v->currentIndex(), QAbstractItemView::PositionAtCenter );
if( !hbar_blocked )
hbar->blockSignals( false );
hbar->setValue( hbar_value );
hbar->setUpdatesEnabled( true );
}
Свистопляски с заморзкой горизонтального скроллбара пришлось сделать, чтобы вьюпорт не дёргался по горизонтали.