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

问题描述 投票:0回答:1

断开两个 QObject 彼此的正确方法是什么,以便一个对象不再发出信号触发另一个对象中的插槽? 这两个对象都不会被销毁,因此

disconnect()
不会在
QObject::~QObject()
中被调用。 我在文档中看到了
disconnect()
方法的两个版本,并且没有一个版本采用指向两个对象的指针。

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

对于执行此操作的正确方法似乎有些困惑。

c++ qt qt4 signals-slots
1个回答
7
投票

来自 Qt 文档

[至]断开特定接收器的连接:

disconnect(myObject, 0, myReceiver, 0);

一旦调用此函数,从

myObject
的信号到
myReceiver
的插槽的所有连接都将被断开。

© www.soinside.com 2019 - 2024. All rights reserved.