2012-02-13 4 views
20

내가 신호를 방출하는 물체를 파괴하면 신호와 슬롯을 연결 해제해야하는지 궁금합니다.Qt 신호 및 슬롯 객체 연결이 끊어 졌습니까?

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에서 신호를 분리 것인가, 아니면 MEM 누출 또는 다른 정의되지 않은 동작으로 이어질 것입니다 예를 들면 다음과 같습니다?

미리 감사드립니다.

+0

'QObject'는 파괴되었을 때 연결을 안전하게 정리할 수 있지만 위와 같이 부모를 이미 가지고있는'QObject'를 삭제하지 말 것을 권장합니다. 'QObject'를 위해 자동 메커니즘을 이미 회로에 배치하십시오. 'QObject'를 직접 삭제하는 대신에'deleteLater()'를 사용하는 것이 일반적으로 더 안전합니다. –

답변

32

신호는 QObject 소멸자를 호출 할 때 자동으로 연결이 끊어집니다. QObject Destructor

3

신호와 슬롯을 수동으로 연결 해제 할 필요가 없으므로 QObject 삭제가 자동으로 제거됩니다.

관련 문제