deleteLater 稍後刪除對象 公共槽


deleteLater() 用於延遲異步、徹底刪除 QObject 對象。

  1. 刪除對象

  2. 在 PyQt PySide,有時必需使用 deleteLater() 稍後刪除,而不是使用 del 刪除語句 (或 delattr 刪除屬性內置函數) 來刪除 QObject 對象。

    因為 del 刪除語句 (或 delattr 刪除屬性內置函數) 隻是刪除瞭 QObject 對象的引用,並沒有徹底刪除對象,導緻該對象仍始終存活,尤其是在 linux 平颱。

    注意: 在 PyQt PySide, 並不是所有 QObject 對象的刪除,都要調用 deleteLater() 稍後刪除公共槽 (一般來說,是盡可能使用 Python 虛擬機的自動垃圾迴收機製)。

  3. 異常警告

  4. 當 QThread 綫程實例 self.threadObject 先調用 quit() 離開槽, 再使用 self.threadObject.deleteLater() 稍後刪除公共槽、del self.threadObject 形式語句、或 delattr(self, "threadObject") 內置函數,刪除綫程實例。

    若之後仍有此 QThread 綫程實例 self.threadObject 的相關操作 (包括自動垃圾迴收),在後颱就可能輸齣以下警告提示 (甚至導緻應用程序崩潰):

    QThread: Destroyed while thread is still running
    						

    相比 terminate() 立即終止 QThread 綫程,雖然存在以上現象,但 quit() 異步、安全離開綫程更可控。

    注意: 不推薦使用 terminate() 立即終止 QThread 綫程實例,因為會導緻綫程死鎖、界麵卡死,甚至可能導緻應用程序崩潰。

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。

內容錶

  1. 刪除對象
  2. 刪除綫程

 

內容錶

  1. del 句法

上一話題

QEventLoop 類

下一話題

QRect 類

快速搜索