我想知道如果我破坏信号发射物体,是否需要断开信号和插槽。这是一个例子:
QAudioOutput * audioOutput = new QAudioOutput(format,mainWindow);
connect(audioOutput,SIGNAL(stateChanged(QAudio::State)),this,SLOT(stateChanged(QAudio::State)));
delete audioOutput;
audioOutput = new QAudioOutput(format,mainWindow);
connect(audioOutput,SIGNAL(stateChanged(QAudio::State)),this,SLOT(stateChanged(QAudio::State)));
这会自动断开旧audioOutput的信号,还是会导致内存泄漏或其他一些未定义的行为?
提前谢谢。
答案 0 :(得分:35)
调用QObject析构函数时,信号会自动断开。 查看Qt文档:QObject Destructor
答案 1 :(得分:4)
您不必手动disconnect()
信号和广告位,QObject
版本会自动清除它们。