簡體   English   中英

如何在Qt中安全地調用斷開連接?

[英]How to safely call disconnect in Qt?

我正在使用Qt 4.8。 我寫類似:

Myclass* A = input_class_pointer;
... 
disconnect(A,SIGNAL(A_S()),B,SLOT(B_S()));

但是,有時當我稱呼它時,我發現A的實際實例已經在其他地方刪除了。 現在,指針A指向垃圾。 通過調用斷開連接,導致崩潰。 有沒有簡單的方法可以解決此問題,而這需要在代碼中進行最少的修改? 我有很多類似的問題...

如以上注釋中所述,有一些方法可以檢測是否刪除了QObject實例。 一個是QPointer,它是一種弱指針。 但是問題是我們想知道何時刪除該QObject,而不是事后知道。 因此,存在QObject :: destroyed信號。

connect(A, destroyed(QObject*), this, onWatchObjDestroyed(QObject*));

在監視某些對象的類代碼中:

void MyClass::onWatchObjDestroyed(QObject* pObj)
{
   // do certain disconnects for pObj, etc. if needed (?)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM