У меня есть QProcess * process
, объявленный как член класса, и я выделил в конструкторе `process = new QProcess '. Теперь, когда пользователь нажимает кнопку, я запускаю процесс.Что произойдет, если я снова вызову QProcess :: start()?
void MainWindow::rsync()
{
process->start("rsync c:\\test\\sync1 [email protected]:/Test");
// additionally what will happen if I do this
// process->start("ping [email protected]");
}
Теперь синхронизация может занять до 30 секунд, что произойдет, если я снова нажму кнопку в течение этого времени? Что произойдет, если я снова нажму кнопку после завершения первой синхронизации? Можно ли снова вызвать метод start()
объекта QProcess, который я выделил, или удалить его и перераспределить его?
Часть причины я прошу это первая start
команда does't вполне работает (Rsync, кажется, заблокирован или не выводит никаких сообщений), но 2-й start()
с ping
командных работ, и я вижу выход в моем заявление.
В стороне: вы можете просто иметь процесс QProcess как член класса, не нужно использовать явное управление памятью здесь. Вы сохраните одно распределение кучи таким образом, и у вас будет меньше проблем, о которых можно будет беспокоиться. Подумайте: 'class MainWindow {Q_OBJECT QProcess m_process; ...}; ' –