信号放出オブジェクトを破壊した場合、信号とスロットを切断する必要があるのかと思います。次に例を示します。
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から信号が自動的に切断されますか、それともメモリリークやその他の未定義の動作につながりますか?
前もって感謝します。
QObjectデストラクタを呼び出すと、信号は自動的に切断されます。 Qtのドキュメントをご覧ください: QObject Destructor
手動でdisconnect()
シグナルとスロットを作成する必要はありません。QObject
を破棄すると、それらが自動的にクリーンアップされます。