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