Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: danquimby от Май 30, 2011, 17:30



Название: не отслеживает сигнал finished
Отправлено: danquimby от Май 30, 2011, 17:30
добрый вечер , подскажите почему у меня не удаляется поток
при инициализации

Код:
myThread *tt =new myThread("bla bla");
    tt->start();

Код:
class myThread : public QThread
{
    Q_OBJECT
public:
    myThread(QString _str): str(_str) {}
    void    run()
    {
        connect(this,SIGNAL(finished()),this,SLOT(reliase()));
        sleep(3);
        qDebug() << "complete ";
        qDebug() << str;
        exec();
    }
    QString str;
public slots:
    void    reliase()
{
        qDebug() << "reliase ";
    delete this;
}
};

Вроде должен выходить в reliase ...


Название: Re: не отслеживает сигнал finished
Отправлено: LisandreL от Май 30, 2011, 17:35
Вероятнее всего потому, что он из exec не выходит.
reliase == release ?


Название: Re: не отслеживает сигнал finished
Отправлено: danquimby от Май 30, 2011, 17:42
Вероятнее всего потому, что он из exec не выходит.
reliase == release ?
а почему ? там же просто sleep стоит О_о


Название: Re: не отслеживает сигнал finished
Отправлено: danquimby от Май 30, 2011, 17:45
сделал по другому убрал конект из run и установил его при инициализации

Код:
    myThread *tt =new myThread(tmp->text_chat);
    connect(tt,SIGNAL(finished()),tt,SLOT(reliase()));
    tt->start();
но как говориться "те же яйца только в профиль"


Название: Re: не отслеживает сигнал finished
Отправлено: danquimby от Май 30, 2011, 18:10
самое интересное , что я просто из первоначального кода убрал
из run()
exec();

и все заработало как и мне нужно , фантастика да и только о_О