fetchMore() is meant to grow the model "downwards" (to higher row indices). There is no infrastructure in QAbstractItemView that would require the model to grow "upwards" as it is assumed that when the model is populated, the view shows the beginning of data. When the view is scrolled, the data already populated is kept in memory. What you can do is to provide your own internal cache in the model, only keeping a window of data large enough to populate the view and generate data on the fly as the window (centered around the last accessed index in the model) moves.