It's hard to say. In theory you can limit the rowcount to the real value and use canFetchMore and fetchMore to return additional parts of data, but I'm not sure how it will work in this case.
Some other idea might be to use some other method than index() to trigger the fetch, for example the data() method. But all this is risky, you should think about a better way to fill the full model (for example fetch items for the model in a separate thread).