繁体   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