Обновить

Idle Event в Qt

Время на прочтение3 мин
Охват и читатели6K
Всего голосов 7: ↑4 и ↓3+1
Комментарии9

Комментарии 9

НЛО прилетело и опубликовало эту надпись здесь
на самом деле можно было обойтись и без eventFilter, через перегрузку closeEvent у виджета к примеру. Но только я не понимаю чем перегрузка QApplication лучше, все равно ведь придется перегружать event()? Ну а про оверхед ничего не могу сказать, по идее просто перед передачей событий в дерево объектов вызывается eventFilter для моего qapplication, а в коде eventFilter всего одна проверка.
НЛО прилетело и опубликовало эту надпись здесь
ок, я уже написал, что можно было и без eventFilter обойтись. Ну а кроме этого выкрутасов нет?!
Советовал бы в рассылке Qt-ишной порасспрашивать. Очень полезно иногда бывает. Особенно ваш вопрос будет интересен многим, даже самим разработчикам Qt
На самом деле в играх rendering — «перерисовка» далеко не всегда происходит на idle, большинство движков вообще-то не event driven, a устроены скорее как некий конвеер на котором обработка событий только один из этапов. Я использую Qt в своем движке и при этом не запускаю Qtшный exec() a вызываю processEvents() перед отрисовкой, такой подход сильно упрощает flow игры.
да ладно? во всех исходниках в том числе DirectX сэмплах перерисовка происходила постоянно в отсутствие сообщений к оконной системе.
Я использую Qt в своем движке и при этом не запускаю Qtшный exec() a вызываю processEvents() перед отрисовкой, такой подход сильно упрощает flow игры.

Почти то же самое, или я ошибаюсь?
нет :) разница как если вас все время дергают в течение деня, или вместо этого вы получаете и обрабатываете все просьбы с часу до 2x
прошу прощения я забыл одно важное уточнение в том подходе о котором я написал — как реакция на событие никогда ничего не происходит сразу — только изменяются необоходимые данные или записывается желаемое действие в ответ на событие, потом все считается потом снова rendering
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации