Не могли бы вы предоставить более подробную информацию о том, что вы уже пробовали? The doc говорит Если родительский элемент не соответствует фильтру, ни один из его дочерних элементов не будет показан, что, вероятно, объясняет, почему он, кажется, фильтрует только на первом уровне.
Если ваша цель состоит в том, чтобы фильтровать только определенные уровни дерева, вы должны создать подкласс QSortFilterProxyModel и переопределение filterAcceptRow. Таким образом вы можете указать игнорировать элементы, не относящиеся к определенным уровням дерева. См. the doc для получения дополнительной информации.