从插槽调用 QApplication::p rocessEvents 会导致再次调用同一插槽



有一个信号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调用属于异步处理程序(槽(的机制。本质上,您的插槽是从该机制内部调用的,它将再次调用所有未处理的事件,从自身开始。它的目的是从线程内部调用,而不是从插槽处理程序调用。

相关内容

  • 没有找到相关文章

最新更新