2012-02-13 19 views
20

Sinyal veren nesneyi yok edersem, şarkıları ve yuvaları kesmem gerekip gerekmediğini merak ediyorum.Qt İşaretler ve Yuvalar nesne ayırma?

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))); 

bu otomatik eski audioOutput sinyal bağlantısını mı, yoksa Mem sızıntıları veya başka istenmeyen davranışlara yol açacaktır: İşte bir örnek?

Önceden teşekkür ederiz. El sinyalleri ve yuvaları kesmek gerekmez

+0

onlar kısa olacak bu yana yukarıda olması gibi zaten üst batmıştı bir' QObject' silme karşı öneriyoruz tahrip edildiğinde güvenle bağlantıları temizlemek QObject's QObject's için zaten mevcut olan otomatik mekanizmaları devre dışı bırakın. Ayrıca, bir 'QObject'ü doğrudan silmek yerine' deleteLater() 'ı kullanmak genellikle daha güvenlidir. –

cevap

32

QObject destructor'ı çağırdığınızda sinyaller otomatik olarak kesilir. Qt belgelerine bakın: `Her ne kadar QObject Destructor

3

, QObject imha otomatik olarak temizler.