Я после добавления новых строк вызываю подобное:
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 );
}
 
Свистопляски с заморзкой горизонтального скроллбара пришлось сделать, чтобы вьюпорт не дёргался по горизонтали.