正确的方法是断开两个未被销毁/删除的QObject的信号

时间:2013-06-12 20:29:23

标签: c++ qt qt4 signals-slots

将两个QObject彼此断开连接的正确方法是什么,以便从一个对象发出的更多信号不会触发另一个对象的插槽?这两个对象都不会被销毁,所以disconnect() will not be called in QObject::~QObject()。我在文档中看到了disconnect()方法的两个版本,并且没有一个指针指向两个对象。

重要的是,在断开连接后,接收对象插槽中不再接收信号。缓冲区清除未处理信号时的一些触发是可以的,但信号必须在很短的时间内停止。

对于正确的方法,似乎存在一些混淆。

1 个答案:

答案 0 :(得分:5)

来自Qt docs

  

[To]断开特定接收器:

disconnect(myObject, 0, myReceiver, 0);

调用此功能后,myObject信号到myReceiver插槽的所有连接都将断开连接。