有没有办法告诉QObject
暂时忽略所有传入的信号?
我知道存在一个“QObject::BlockSignals(bool)
”如果设置为true则阻止QObject
发送信号。
我希望功能类型相反,我希望事件队列根本不排队,或者它是否在插槽被阻塞时忽略调用插槽。
换句话说,我要求“QObject::BlockSlots(bool)
”。
(据我所知)没有内置的方法(暂时)关闭QObject的信号接收/处理。
在相关函数中直接实现检查和忽略功能可能是最简单的:
void doStuff()
{
if (ignoreSignals)
return;
// Actual functionality here...
}
如果您无法更改代码,可以考虑断开()相关的信号槽功能(或整个对象),并在以后重新连接()。
或者,您可以实现其他对象连接的“过滤器”对象(而不是直接连接到您的原始对象),并实现前面提到的检查和忽略功能,只转发(即发出())信号,如果过滤器未激活。