2012-05-13 17 views

回答

31

是的,QObject::~QObject析構函數需要照顧的是:

所有信號,並從該物體自動斷開,併爲對象的任何未決的發佈事件從事件隊列中刪除。
但是,使用deleteLater()通常更安全,而不是直接刪除QObject子類。

難道雖然照顧:

警告:刪除一個QObject而未決的活動等待交付可以導致崩潰。如果QObject存在於與當前正在執行的線程不同的線程中,則不能直接刪除它。使用deleteLater()代替,這將導致事件循環在所有未處理事件傳遞給它之後刪除對象。

+0

另請注意:「警告:在待處理事件等待傳遞時刪除QObject可能導致崩潰。」如果出現這種情況,請使用['deleteLater()'](http://qt-project.org/doc/qt-4.8/qobject.html#deleteLater)。 – 2012-05-13 10:04:40

+2

在使用lambda表達式的時候也要小心(如果你使用的話):它們不會被斷開連接...猜我怎麼知道;) – mBardos

+0

這在Qt5中也是如此。 – RegularlyScheduledProgramming

相關問題