Можно попробовать один раз написать запрос на выборку данных из таблицы, а уже потом манипулировать данными (сортировка или фильтрация) через объект класса "QSortFilterProxyModel", который связать связать с исходной моделью "QSqlQueryModel". Тогда можно перед манипуляциями сохранять индекс выделенного элемента, а после - переходить к нему обратно (если он виден в представлении).
П.С.: в зависимости от задачи это может и не подойти...
"Беда" в том, что фильтрацию я намереваюсь делать на стороне сервера. С точки зрения производительности на клиента это возложить никак не могу. Будут скорее регэкспы по всем полям.