Название: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 03, 2015, 12:55 Добрый день. Возникла необходимость в программе дожидаться выполнения внешнего процесса, но хочется в это время показывать пользователю не зависшее окно, а аккуратное сообщение о том, что ожидается завершение внешнего процесса.
Я сделал модальный диалог без кнопок, который нельзя закрыть и пытаюсь решить задачу следующим образом: Код: StatusMessage* message = new StatusMessage(this);//Создание того самого диалога Внешняя программа и возвращение из неё отрабатываются корректно, но пока она работает интерфейс основной программы не перерисовывается. Что я делаю не так? Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: GreatSnake от Апрель 03, 2015, 13:13 Запускай через QProcess::startDetached().
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 03, 2015, 13:20 startDetached() никак не позволяет следить за статусом процесса вроде. А организовывать дополнительные связи как-то не хочется.
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Пантер от Апрель 03, 2015, 13:25 Есть сигнал
Код
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 03, 2015, 13:28 startDetached() это статическая функция, к сигналу какого объекта присоедняться после её вызова?
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Пантер от Апрель 03, 2015, 13:31 startDetached() это статическая функция, к сигналу какого объекта присоедняться после её вызова? Если это мне, то я не имел ввиду startDetached.Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: GreatSnake от Апрель 03, 2015, 14:39 startDetached() это статическая функция, к сигналу какого объекта присоедняться после её вызова? Используй тогда QProcess::start().Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: qate от Апрель 04, 2015, 15:39 Я сделал модальный диалог без кнопок, который нельзя закрыть убивать Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 04, 2015, 16:21 Используй тогда QProcess::start(). Спасибо, сработало. убивать А что такого? Делать отдельный виджет, блокировать события всего остального, что есть на экране, пока он активен - можно конечно, но нафига? Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Fregloin от Апрель 06, 2015, 09:39 QProgressDialog?
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Igors от Апрель 06, 2015, 10:31 А что такого? Делать отдельный виджет, блокировать события всего остального, что есть на экране, пока он активен - можно конечно, но нафига? Часто (а может и в большинстве случаев) в этом есть смысл - иначе др события могут стать опасными. Напр пока выполняется процесс юзер взял да и еще раз его запустил. Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 06, 2015, 12:19 А что такого? Делать отдельный виджет, блокировать события всего остального, что есть на экране, пока он активен - можно конечно, но нафига? Часто (а может и в большинстве случаев) в этом есть смысл - иначе др события могут стать опасными. Напр пока выполняется процесс юзер взял да и еще раз его запустил. При висящем модальном диалоге пользователю сложновато будет выполнять какие-то другие действия в программе. Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: qate от Апрель 06, 2015, 12:49 убивать А что такого? Делать отдельный виджет, блокировать события всего остального, что есть на экране, пока он активен - можно конечно, но нафига?кнопка "отмена" нужна же, ведь нет гарантий работы вызванного процесса Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Crazy Sage от Апрель 06, 2015, 13:00 Вряд ли у него при этом будет состояние running
Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: Igors от Апрель 06, 2015, 13:38 При висящем модальном диалоге пользователю сложновато будет выполнять какие-то другие действия в программе. "Какие-то др действия" могут зависеть от результатов запуска и/или то что он "в полете", и эти проверки могут оказаться очень непростыми. В общем о граблях Вас пердупредили, а дальше сами смотрите Название: Re: Перерисовка интерфейса во время ожидания QProcess Отправлено: qate от Апрель 07, 2015, 12:54 Вряд ли у него при этом будет состояние running он может зависнуть, будет running |