Выполнение слота на каждой итерации цикла приложения - PullRequest
3 голосов
/ 26 февраля 2011

Как я могу вызывать свой слот на каждой итерации цикла событий приложения? Единственный способ, которым я знаю, - это использовать QTimer, и при каждом сигнале тайм-аута (каждую миллисекунду) я могу вызывать свой слот. Но мне не нравится этот вариант, он выглядит как обходной путь.

Есть предложения, как сделать это более правильно?

Ответы [ 2 ]

3 голосов
/ 26 февраля 2011

Из документации QCoreApplication :: exec () Qt 4.7:

Чтобы ваше приложение работало без дела обработка (т.е. выполнение специального функционировать всякий раз, когда нет ожидающих события), используйте QTimer с таймаутом 0. Более продвинутые схемы обработки простоя может быть достигнуто с помощью processEvents ().

Итак, ваш подход - это то, что предписано. Посмотрите на QCoreApplication :: processEvents () для большего контроля над циклом событий.

0 голосов
/ 10 мая 2011

Вы также можете взглянуть на использование метода installEventFilter объекта QCoreApplication :: instance (). Это позволит вам получить доступ ко ВСЕМ событиям до их обработки для всех виджетов в вашем приложении.

...