std::unique предполагает что неуникальные значения идут подряд.
Например последовательность отсортированная.
Если это не так, то проще отфильтровать руками:
Вот псевдокод:
std::set<Тип_из_столбца> Набор;
Для каждой строки:
  Если значения_из_столбца нет в Наборе:
    добавляем  значения_из_столбца нет в Набор
  Иначе:
    Строка - дубль!
Можно сделать простейшего наследника от QSortFilterProxyModel и засунуть в него немудрящую эту логику.  ;-)