LINUX.ORG.RU

Qt: возврат контроля виджету

 , , ,


0

1

у меня есть очень большой и жирный цикл. я хочу отслеживать каждые 1000 итераций и после них обновлять все виждеты так, чтобы виндовс не думал что процесс завис. я пытался делать update, repaint, setFocus для QMainWindow в котором у меня все лежит. Так же я пробовал делать все тоже для потомков этого окна. как вернуть управление на время в цикле, чтобы не было написано «не отвечает». интересует именно возврат управления, а не таймеры (задержка маленькая), треды (портировать сложно) и concurrent. спасибо

qApp->processEvents();

но нужно быть готовым, что это активирует таймеры и другие события, ждущие своей очереди

alex_custov ★★★★★ ()
Ответ на: комментарий от preepunk

ну на мой скромный взгляд - это таки просто сделать из любой позиции

shty ★★★★★ ()

Доп. вопрос: время выполнения QApplication::processEvents() равно промежутку между таймаутами QTimer с задержкой 0?

preepunk ()
Ответ на: комментарий от preepunk

Время выполнения QApplication::processEvents() составляется из времени выполнения кода в самом processEvents() + время выполнения всех пользовательских обработчиков оттуда запускаемых.

m0rph ★★★★★ ()

Аккуратнее с processEvents(), если у тебя нереентерабельный код

unC0Rr ★★★★★ ()

Если большой и жирный цикл вызывается в результате события (сигнал или QEvent), имей в виду, что сможешь зайти в этот же цикл, не закончив предыдущий.

staseg ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.