C++ удаления дубликатов, почему не работает?
void Wid::test() {
    vector<string> stp;
    stp.push_back(text->toPlainText().toStdString());
    // В stp одна штука
    sort(stp.begin(),stp.end());
    // Ну что ей будет, этой штуке?
    stp.erase(unique(stp.begin(),stp.end()),stp.end());
    // unique даст end; поведение vector при этом не определено.
    ofstream filesave(pp);
    copy(stp.begin(),stp.end(), ostream_iterator<string>(filesave,"\n"));
}
Как правильно заметил Mercury13 , у вас в векторе один элемент — всё содержимое QPlainTextEdit вместе с переносами строки и т.п. 
Чтобы работало, как вам хочется, нужно взять это содержимое, разбить его на строки, запихнуть в вектор и потом работать с этим.