Приветствую!
Создал новый класс FindTargets , унаследованный от QObject
с потоком работаю в классе AppCore в конструкторе:
ft = new FindTargets(0);
thread = new QThread(0);
connect(thread, SIGNAL(started()), ft, SLOT(process()));
connect(ft, SIGNAL(finished()), thread, SLOT(quit()));
connect(ft, SIGNAL(finished()), ft, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
ft->moveToThread(thread);
thread->start();
в десструкторе:
AppCore::~AppCore()
{
qDebug()<<"AppCore::~AppCore";
ft->stop();
}
В классе FindTargets бесконечный цикл while который как только остановится сигналит finished() и функция stop(), которая непосредственно останавливает его .
Для завершения работы программы создал связь:
QObject::connect(&app, SIGNAL(aboutToQuit()), appCore, SLOT(deleteLater()));
НО деструктор FindTargets::~FindTargets() не вызывается
Вывод:
AppCore::~AppCore //-- сработал десструктор основного класса
FindTargets::stop //-- сработал stop()
на этом программа завершается (действительно завершается, процессов висящих нет!)
Если я в другом месте вызову ft->stop(), то десструктор FindTargets::~FindTargets вызван будет.
Подскажите, пожалуйста, почему не вызывается десструктор FindTargets::~FindTargets ??