Russian Qt Forum

Qt => Общие вопросы => Тема начата: spectre71 от Июль 06, 2009, 23:22



Название: QThread - автоуничтожение
Отправлено: spectre71 от Июль 06, 2009, 23:22
Как сделать так, чтобы объект QThread, сам уничтожался по завершению?

Код
C++ (Qt)
class MyThread : public QThread {
....
....
}
 
void runThread(void) {
 MyThread* thr = new MyThread();
 thr->start();
}

где-то делаем вызов runThread и забываем о созданом MyThread, объект "thr"  должен освободиться сам по завершению


Название: Re: QThread - автоуничтожение
Отправлено: f-r-o-s-t от Июль 06, 2009, 23:46
А может отловить сигнал finished и в слоте его уничтожить ?
Код
C++ (Qt)
void someClass::someSlot()
{
delete qobject_cast<QThread*>(sender());
}
 


Название: Re: QThread - автоуничтожение
Отправлено: pastor от Июль 06, 2009, 23:53
finished + deleteLater


Название: Re: QThread - автоуничтожение
Отправлено: f-r-o-s-t от Июль 07, 2009, 00:35
finished + deleteLater
Да, согласен, так намного изящней =)


Название: Re: QThread - автоуничтожение
Отправлено: spectre71 от Июль 07, 2009, 00:50
finished + deleteLater
Спасибо, то что надо!

Код
C++ (Qt)
class MyThread : public QThread {
....
....
}
 
void runThread(void) {
 MyThread* thr = new MyThread();
 connect(thr , SIGNAL(finished()), thr , SLOT(deleteLater()));
 thr->start();
}