【发布时间】:2012-03-05 02:30:33
【问题描述】:
我想知道如果我破坏信号发射对象是否需要断开信号和插槽。这是一个例子:
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)));
这会自动断开信号与旧音频输出的连接,还是会导致内存泄漏或其他一些未定义的行为?
提前谢谢你。
【问题讨论】:
-
虽然
QObjects 在连接被破坏时安全地清理连接,但我建议不要删除已经像上面那样设置其父级的QObject,因为这会使自动机制短路为QObjects 准备好了。通常使用deleteLater()也比直接删除QObject更安全。
标签: qt signals-slots