当信号与槽没有必要继续保持关联时,我们可以使用 disconnect 函数来断开连接。其定义如下:

bool QObject::disconnect ( const QObject * sender, const char * signal,
                           const Object * receiver, const char * member ) [static]
12

这个函数断开发射者中的信号与接收者中的槽函数之间的关联。

有三种情况必须使用 disconnect() 函数:

1、断开与某个对象相关联的任何对象。这似乎有点不可理解,事实上,当我们在某个对象中定义了一个或者多个信号,这些信号与另外若干个对象中的槽相关联,如果我们要切断这些关联的话,就可以利用这个方法,非常之简洁。

disconnect( myObject, 0, 0, 0 )
或者
myObject->disconnect()
123

2、断开与某个特定信号的任何关联。

disconnect( myObject, SIGNAL(mySignal()), 0, 0 )
或者
 myObject->disconnect( SIGNAL(mySignal()) )
123

3、断开两个对象之间的关联。

disconnect( myObject, 0, myReceiver, 0 )
或者
myObject->disconnect(  myReceiver )

1234

在 disconnect 函数中 0 可以用作一个通配符,分别表示任何信号、任何接收对象、接收对象中的任何槽函数。但是发射者 sender 不能为 0,其它三个参数的值可以等于 0。

我能想到的可能用到的只有在对话框中开启一个临时对象进行某些工作,当工作结束需要析构这个临时对象的时候可能采用到disconnect 不过没有目标的信号或者没有触发的槽都是可以存在的,短期看来应该不影响我们初学

Qt的emit发射(信号)、signals信号、slot槽的使用_偕臧-CSDN博客_qt 发送信号