2013-09-29 3 views
0

Я пытаюсь написать графический интерфейс, который при нажатии кнопки запускает или останавливает процесс. В настоящее время мой код даже не запускает процесс, и я зацикливаюсь на этом. Кнопка нажимает, и текст изменяется, но процесс не выполняется и сообщения об ошибках не появляются. Это код слот кнопки в объекте QMainWindow:Запуск и уничтожение процессов в QT C++ с помощью кнопки

void clickedSlot(){ 
     QString s = "Record"; 
     //switch between record and stop 
     if(s!=((QPushButton*)sender())->text()){ 
      ((QPushButton*)sender())->setText("Record"); 
    process->kill(); 
    process->waitForFinished(); 
    delete process; 
     }else{ 
      ((QPushButton*)sender())->setText("Stop"); 
    process = new QProcess(this); 
    QString executable = "./record"; 
      process->start(executable); 
    process->waitForStarted(); 
     } 
}; 

Любая помощь, почему QProcess не запускается и как остановить его после того, как было бы весьма признателен. У меня есть #include в верхней части кода

+1

Для получения дополнительной информации вы должны проверить QProcess :: error() и QProcess :: state(). Вы также должны проверить возвращаемое значение QProcess :: waitForStarted() – JRG

+0

Проверить возвращаемое значение 'waitForStarted'. Он должен быть ложным, если процесс не запускался. Убедитесь, что исполняемый файл 'record' находится в рабочем каталоге приложения. –

+0

На какой платформе вы используете OSX или Linux? – TheDarkKnight

ответ

0

Проблема может быть в исполняемом вами пути (нет). Попробуйте еще раз убедившись, что:

  • вы даете абсолютный путь к process->start(absolutePath, arguments).
  • вы убедитесь, что process->waitForStarted() возвращает true.
  • вы можете получить результат своей программы с помощью process-> readAllStandardOutput() и process-> readAllStandardError() для ее отладки.
Смежные вопросы