Qt信号和插槽对象断开连接?

时间:2012-02-13 17:10:57

标签: qt signals-slots

我想知道如果我破坏信号发射物体,是否需要断开信号和插槽。这是一个例子:

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的信号,还是会导致内存泄漏或其他一些未定义的行为?

提前谢谢。

2 个答案:

答案 0 :(得分:35)

调用QObject析构函数时,信号会自动断开。 查看Qt文档:QObject Destructor

答案 1 :(得分:4)

您不必手动disconnect()信号和广告位,QObject版本会自动清除它们。