Qt QApplication :: processEvents()在自定义事件处理程序中

时间:2010-12-30 08:24:33

标签: events qt event-handling long-running-processes

是否可以在事件处理程序中调用QApplication :: processEvents(),其中有一个很长的进程。我的程序终止于Segfault。我的代码是这样的:

void MyApplication::customEvent(QEvent* event)
{
  if(event->type() == UserEventCustom)
  {
    for(int i = 0; i < 99999; ++i)
    {
       QApplication::processEvents();
       doSomething();
    }

    event->accept();
  }
}

1 个答案:

答案 0 :(得分:0)

我怀疑Ton van den Heuvel(来自评论)是正确的,你看到堆栈溢出。

但是,在我的公司,我们发现最好避免使用processEvents()。我们的经验表明processEvents()会导致崩溃,我们会尽量避免使用它。我会问你自己是否可以在没有processEvents()调用的情况下重构你的代码。例如,您可能会生成一个线程来处理。