我应该使用QCoreApplication :: processEvents()还是QApplication :: processEvents()?

yan*_*nce 12 user-interface qt

我有一个从两个QThreads主线程调用的方法.这个方法有时需要花费很长时间才能在循环中进行计算,所以我放了QCoreApplication::processEvents()这个就可以防止GUI冻结.在某些时候我已经改变QCoreApplication::processEvents()QApplication::processEvents()但是这导致GUI冻结(我非常确定那是什么令人惊叹它因为我QCoreApplication::processEvents()放回它还没有再次冻结)我是正确的认为QApplication::processEvents()从主线程和QThreads调用可以冻结GUI?

gre*_*eth 11

这两者都不应该只有当您有要处理的实际待处理事件时才应该使用calld.您可能会发现这很有用:如何在主线程繁忙时使Qt工作?


Kal*_*son 11

将长时间运行的进程移出主线程会更好,所以你不需要调用processEvents().在这个长时间运行的过程中,你可以发出你需要的任何信号,这样gui就有足够的信息来做更新等等 processEvents,但是,这通常是一个糟糕设计的拐杖.