我有一个从QThreads
和主线程调用的方法。这个方法有时需要花费很长时间才能在循环中进行计算,所以我放QCoreApplication::processEvents()
这可以防止GUI冻结。在某些时候,我已经为QCoreApplication::processEvents()
更改了QApplication::processEvents()
,但这导致GUI冻结(我非常确定那是什么让人感到惊讶,因为自从我放回QCoreApplication::processEvents()
之后它又没有冻结了)我是有权认为从主线程和QThreads调用QApplication::processEvents()
可以冻结GUI吗?
答案 0 :(得分:11)
两者都不是,只有当您有要处理的实际待处理事件时,才应该使用processEvent()。 您可能会发现这很有用:How to make Qt work when main thread is busy?
答案 1 :(得分:11)
将长时间运行的进程移出主线程会更好,因此您无需调用processEvents()
。在这个长时间运行的过程中,你可以发出你需要的任何信号,这样gui就有足够的信息来做更新等等。processEvents
然而,通常是一个糟糕设计的拐杖。