有一个信号some_signal
,它使用排队连接连接到插槽on_some_signal
。喜欢这个:
connect(this, SIGNAL(some_signal()), receiver, SLOT(on_some_signal()),
Qt::QueuedConnection|Qt::UniqueConnection);
on_some_signal
调用一些重型机械,其中称为QApplicaton::processEvents
。调用QApplicaton::processEvents
时,它会再次触发同一槽。
问题是,如何防止插槽被调用两次?信号仅发出一次。
这是预期的行为。QApplicaton::processEvents
调用属于异步处理程序(槽(的机制。本质上,您的插槽是从该机制内部调用的,它将再次调用所有未处理的事件,从自身开始。它的目的是从线程内部调用,而不是从插槽处理程序调用。