Jeżeli masz problem z zakończeniem wątku to znaczy, że przeciążyłeś metodę run() i nie uwzględniłeś w niej możliwości zakończenia. W Qt5.2 zostały dodane funkcje QThread::requestInterruption() oraz QThread::isInterruptionRequested()
class Worker : public QObject
{
Q_OBJECT
protected:
void run() override {
while(true) { // pętla główna
if (isInterruptionRequested())
break;
// kod wątku
}
}
}
Worker worker;
worker.start();
// jakiś kod
worker.requestInteruption(); // zlecamy zakończenie wątku
worker.wait() // czekamy aż wątek się zakończy