Должен ли я использовать QCoreApplication :: processEvents () или QApplication :: processEvents ()? - PullRequest
12 голосов
/ 28 января 2010

У меня есть метод, который вызывается как из QThreads, так и из основного потока. иногда этот метод может занять много времени, чтобы выполнить вычисления в цикле, поэтому я помещаю QCoreApplication::processEvents(), и это предотвращает зависание графического интерфейса. В какой-то момент я изменил QCoreApplication::processEvents() на QApplication::processEvents(), но это привело к зависанию графического интерфейса пользователя (я почти уверен, что это то, что его замораживало, потому что после того, как я положил QCoreApplication::processEvents(), оно снова не замерзло) Правильно ли я думаю, что вызов 1006 * из основного потока и QThreads может заморозить графический интерфейс?

Ответы [ 2 ]

11 голосов
/ 28 января 2010

Вам будет намного лучше перенести длительный процесс из основного потока, чтобы вам не нужно было вызывать processEvents(). В рамках этого длительного процесса вы можете испускать любые сигналы, которые вам нужны, поэтому графический интерфейс имеет достаточную информацию для обновления и т. Д. processEvents, однако, обычно опора для плохого дизайна.

11 голосов
/ 28 января 2010

Никто не должен вызывать processEvent (), только если у вас есть фактические ожидающие события для обработки.Вы можете найти это полезным: Как заставить Qt работать, когда основной поток занят?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...