Как я понял в qt основной цикл событий начинается после
int QApplication::exec()
соответственно QMainWindow.show() открывает окно только после того как выполнение всех задач после этого прекращается и QApplication возвращает число из exec().
В обход этому в документации написано что можно использовать таймер с нулевым таймаутом что бы реализовать выполнение какого либо функционала после открытия окна.
To make your application perform idle processing, i.e., executing a special function whenever there are no pending events, use a QTimer with 0 timeout. More advanced idle processing schemes can be achieved using processEvents().
Проверил точкой остановой - все верно: app.exec() запускается перед функцией-слотом в таймере как и должно быть.
И все равно если после открытия окна к нему идет беспрерывное обращение (допустим бесконечный вывод в QPlainTextEdit какой-нибудь строки), то окно тупо не открывается, а сидит в доке свернутое. Если же на форму повесить кнопку при нажатии к которой происходит аналогичное обращение к любому виджету через while (true){...} то форма намертво зависает. Как избежать подобного и подружить GUI с любой нагрузкой, ну и если ProcessEvent в этом поможет, то объясните пожалуйста как его применить.
Цель: допустим в качестве приложения у меня консоль где бесконечно что то может выводиться и мне нужно видеть каждое изменение.
Вынести вычисления в отдельный поток, тогда основной не будет блокироваться и зависаний не будет.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости