Объект Qt Signals и Slots отключается? - PullRequest
23 голосов
/ 13 февраля 2012

Мне интересно, нужно ли мне отключить сингалы и слоты, если я уничтожу объект, излучающий сигнал.Вот пример:

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 ]

35 голосов
/ 13 февраля 2012

Сигналы автоматически отключаются при вызове деструктора QObject.Посмотрите документацию Qt: Деструктор QObject

4 голосов
/ 13 февраля 2012

Вам не нужно вручную disconnect() сигналы и слоты, уничтожение QObject автоматически очищает их.

...