So the index is in the model and in the proxy model, it's just filtered out in the view.
If you call invalidateFilter() then a new filtering will be started. Also you don't pass any model index to filterChanged() at all so I don't understand what you're trying to say.
Please provide a *minimal* compilable example.