在此topic它告诉当一个 qobject 删除它的事件连接将被删除。我有一个像下面这样的案例:
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();
在 worker 的析构函数中我有:
Worker::~Worker(void){
if(work != nullptr){
work->deleteLater();
}
}
我 %100 确定作品已被删除。我可以用断点看到它。我什至可以看到 QObjects descstructor 调用。
但是有些已删除的工作对象仍然收到“完成百分比”信号。又因为被删除,造成暗恋。
请问为什么删除对象后信号没有断开?
Worker的析构函数中的第二个问题 work->deleteLater();
或者 delete work;
是否正确?
最佳答案
你为什么不使用disconnect()断开所有连接的插槽/信号? 您可以在析构函数中调用此函数。 Here你有类似主题的解决方案
关于c++ - Qt对象删除但信号未断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037088/