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

Fre*_*Ben 3 c++ qt qt4 signals-slots

将两个QObject相互断开的正确方法是什么,以便从一个对象发出的更多信号不会触发另一个对象的插槽?这两个对象disconnect() 都不会被 破坏,因此不会被调用QObject::~QObject().我disconnect()在文档中看到了该方法的两个版本,并且都没有一个指向两个对象的指针.

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

对于正确的方法,似乎有些困惑.

Mat*_*ine 6

来自Qt文档:

[To]断开特定接收器:

disconnect(myObject, 0, myReceiver, 0);
Run Code Online (Sandbox Code Playgroud)

一旦调用,所有从myObject信号到myReceiver插槽的连接都将断开.

  • 谢谢!对于未来的读者,你也可以使用`myobject-> disconnect(myReceiver);`来更优雅. (2认同)