In this topic it told when a qobject deleted its active connections will be deleted. I have a case like below:
Work* work = new Work();//->Work derived from QObject
Worker* worker = new Worker(work);//->Worker derived from QThread and has the ownership of work
connect(work, SIGNAL(percentageComplete(int)), progressDialog, SLOT(setValue(int)));
connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
progressDialog->show();
worker->start();
In worker's destructor I have :
Worker::~Worker(void){
if(work != nullptr){
work->deleteLater();
}
}
I am %100 sure that work is deleted. I can see it with a breakpoint. I can even see QObjects desctructor call.
But some how deleted work object still receiving signal "percentage complete". And because it is deleted ,causing a crush.
I want to ask why signals are not disconnected even object is deleted?
A second question in Worker's destructor work->deleteLater();
or delete work;
is correct?