Russian Qt Forum
Ноябрь 24, 2024, 06:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess: запуск и ожидание завершения процесса  (Прочитано 7580 раз)
kn0pka
Гость
« : Апрель 03, 2009, 10:34 »

В GUI в ходе процесса создается текстовый файл, надо дождаться, когда этот файл запишется полностью, а потом запустить другой процесс, который этот файл использует:
Код:
    process = new QProcess(this);
    ...
    process->setStandardOutputFile(fileName);
    process->start(program);
    process->waitForFinished();
   
    process2 = new QProcess(this);
    ...
    process2->setStandardInputFile(fileName);
    ...
Если файл большой, то пока идет ожидание окончания процесса, всё пугающе виснет. В документации как раз сказано, что "Calling this function from the main (GUI) thread might cause your user interface to freeze". Если заменить
Код:
    process->start(program);
    process->waitForFinished();
на
Код:
    process->execute(program);
, то процесс вобще не выполняется.
Есть какая-нибудь альтернатива для waitForFinished() в GUI?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Апрель 03, 2009, 10:37 »

Да, есть. Использовать сигналы\слоты, а именно ловить сигнал:

Цитировать
void QProcess::finished ( int exitCode, QProcess::ExitStatus exitStatus )   [signal]
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
kn0pka
Гость
« Ответ #2 : Апрель 03, 2009, 10:41 »

Спасибо.
Записан
Tonal
Гость
« Ответ #3 : Апрель 03, 2009, 11:23 »

Этож какой должен быть размер файлика...
Если он тебе не не нужен ни для чего, кроме коммуникации этих процессов, то посмотри на функцию setStandardOutputProcess. Улыбающийся
Записан
kn0pka
Гость
« Ответ #4 : Апрель 03, 2009, 13:03 »

Размер файла может быть несколько метров, он нужный.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.