32
Qt是否會自動刪除對象之間的連接?刪除其中一個類時,Qt中的信號是否自動斷開
例如connect (A .. , B ..)
,當A(指針)被刪除或B被刪除時,連接是否斷開?
是否有必要在析構函數中顯式使用斷開連接?
Qt是否會自動刪除對象之間的連接?刪除其中一個類時,Qt中的信號是否自動斷開
例如connect (A .. , B ..)
,當A(指針)被刪除或B被刪除時,連接是否斷開?
是否有必要在析構函數中顯式使用斷開連接?
是的,QObject::~QObject
析構函數需要照顧的是:
所有信號,並從該物體自動斷開,併爲對象的任何未決的發佈事件從事件隊列中刪除。
但是,使用deleteLater()
通常更安全,而不是直接刪除QObject子類。
難道雖然照顧:
警告:刪除一個QObject而未決的活動等待交付可以導致崩潰。如果QObject存在於與當前正在執行的線程不同的線程中,則不能直接刪除它。使用deleteLater()代替,這將導致事件循環在所有未處理事件傳遞給它之後刪除對象。
另請注意:「警告:在待處理事件等待傳遞時刪除QObject可能導致崩潰。」如果出現這種情況,請使用['deleteLater()'](http://qt-project.org/doc/qt-4.8/qobject.html#deleteLater)。 – 2012-05-13 10:04:40
在使用lambda表達式的時候也要小心(如果你使用的話):它們不會被斷開連接...猜我怎麼知道;) – mBardos
這在Qt5中也是如此。 – RegularlyScheduledProgramming