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

4
什么是适当的方法来断开两个QObject之间的连接,以使一个对象发出的信号不再触发另一个对象中的槽? 两个对象都不会被销毁,因此disconnect() 将不会在 QObject::~QObject() 中调用。我在文档中看到了disconnect()方法的两个版本,但没有一个方法接受两个对象的指针。
重要的是在断开连接后不再接收到接收对象的信号。在缓冲区清除未处理信号时触发几个信号是可以接受的,但这些信号必须在很短的时间内停止。
似乎有一些关于正确方法的混淆。
1个回答

7

根据Qt文档

[To] Disconnect a specific receiver:

disconnect(myObject, 0, myReceiver, 0);

一旦调用此函数,myObject的信号与myReceiver的槽之间的所有连接都将被断开。


2
谢谢!对于未来的读者,您也可以使用 myobject->disconnect( myReceiver ); 来使代码更加优雅。 - Freedom_Ben
你应该使用nullptr而不是0来避免警告。 - Silicomancer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接