Russian Qt Forum

Qt => Общие вопросы => Тема начата: kadr от Март 04, 2010, 09:56



Название: QProcess
Отправлено: kadr от Март 04, 2010, 09:56
Привет всем, подскажите пожалуйста,как можно сделать так, что бы программа не ждала завершения процесса запущенного Qprocess::execute. Одним словом надо, что бы после нажатия на кнопку, запустился батник, а основная программа закрылась, пока же получается запустить батник, но программа при этом ждет завершения работы батника!


Название: Re: QProcess
Отправлено: BRE от Март 04, 2010, 09:58
bool QProcess::startDetached ( ... )   [static]


Название: Re: QProcess
Отправлено: kadr от Март 04, 2010, 10:25
bool QProcess::startDetached ( ... )   [static]
Ничего не происходит, программа закрывается, а батник не выполняется!


Название: Re: QProcess
Отправлено: BRE от Март 04, 2010, 10:30
Покажи как ты делаешь.


Название: Re: QProcess
Отправлено: ax от Март 04, 2010, 10:40
Под Windows попробуй батник запустить через cmd
Код:
QProcess::startDetached("cmd", QStringList() << "/c" << "ftp.bat", "c:/ftp/send");


Название: Re: QProcess
Отправлено: Akaiten от Март 04, 2010, 11:06
Думаю, что проблема с путями, не может найти ftp.bat. Попробуйте запустить cmd с параметром /k чтобы проверить рабочую директорию.


Название: Re: QProcess
Отправлено: kadr от Март 04, 2010, 11:38
Спасибо, за ответ, все получилось.
Теперь вот возник другой вопрос, скажите как можно скачать exe-шник с http сервера, я делаю так:
Код:
 void nomkl_num::update_ver(QNetworkReply* update_ver)
{
  get_prog.setUrl(QUrl("http://"+host.trimmed()+"/zakaz.exe"));
  man_prog.get(get_prog); //Отправляем запрос
  connect(&man_prog,SIGNAL(finished(QNetworkReply*)),this,SLOT(get_program(QNetworkReply*)));
}

void nomkl_num::get_program(QNetworkReply *prog)
{
  QFile prog_name("updates/"+prog->url().path().remove("/"));
  prog_name.open(QIODevice::WriteOnly);
  QDataStream data(&prog_name);
  data << prog->readAll();
  prog_name.close();
}
Он скачивает файлик и добавляет в начало лишние 4 байта, после чего она становиться не работоспособной!


Название: Re: QProcess
Отправлено: Akaiten от Март 04, 2010, 13:16
Убери QDataStream и используй QFile::write()
Код
C++ (Qt)
prog_name.write(prog->readAll());
 


Название: Re: QProcess
Отправлено: kadr от Март 04, 2010, 13:35
Убери QDataStream и используй QFile::write()
Код
C++ (Qt)
prog_name.write(prog->readAll());
 
Спасибо.