web-dev-qa-db-ja.com

Qt Signals and 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から信号が自動的に切断されますか、それともメモリリークやその他の未定義の動作につながりますか?

前もって感謝します。

25
Anton

QObjectデストラクタを呼び出すと、信号は自動的に切断されます。 Qtのドキュメントをご覧ください: QObject Destructor

39
Adrien BARRAL

手動でdisconnect()シグナルとスロットを作成する必要はありません。QObjectを破棄すると、それらが自動的にクリーンアップされます。

4
Frank Osterfeld