I'm not providing any code for your 'very simple demo'. I used filterable ListModel implementations in the past. They had two collections of elements:
1) All elements (unfiltered)
2) Filtered elements (subset)
The model then works only with the filtered subset and provides a method applyFilter(...).
To use a similar approach for paging, you could remember the page index (and page size) and create your subset in a method like setPage(...). I see no big obstacles here.
Censorship is the younger of two shameful sisters, the older one bears the name inquisition. -- Johann Nepomuk Nestroy