我使用的是qt 4.8。 我写了类似的东西:
Myclass* A = input_class_pointer;
...
disconnect(A,SIGNAL(A_S()),B,SLOT(B_S()));
但是,有时当我调用它时,我发现A的实际实例已经在其他地方删除了。而现在指针A指向垃圾。通过调用断开连接,它导致了崩溃。 有没有简单的方法来解决这个需要在代码中进行最少量修改的方法? 我有很多类似的问题......
答案 0 :(得分:0)
如上面的评论所述,有方法可以检测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 (?)
}