Запустите внешнюю программу с кнопки QT

Я создал главное окно с одной кнопкой в ​​QT, и когда я пытаюсь запустить дополнительную небольшую программу при нажатии кнопки, она не работает. У меня есть следующий код:

void MainWindow::on_pushButton_clicked()
{
    QProcess *process = new QProcess(this);
    process->start("/home/helloworld.out");
}

Я работаю с линуксом. Есть идеи, что могло случиться? Заранее спасибо.


person J.Blanco    schedule 26.07.2017    source источник
comment
Есть идеи, что могло произойти? - Судя по вашему описанию, ваш kajigger не выровнен.   -  person Captain Obvlious    schedule 26.07.2017
comment
Видите ли вы какие-либо сообщения об ошибках? Вы можете проверить статус процесса? [см. перечисление ошибок doc.qt.io/qt-5/qprocess.html]   -  person Paul Floyd    schedule 26.07.2017
comment
У вас есть разрешение на выполнение какого-либо файла в папке /home? Обычно с пользователем по умолчанию вы можете получить доступ только к /home/$USER   -  person eyllanesc    schedule 26.07.2017
comment
Попробуйте создать минимально воспроизводимый пример. Это проблема, связанная с плохим соединением сигнала/слота, т. е. проблема on_pushButton_clicked или QProcess?   -  person m7913d    schedule 26.07.2017
comment
Я опубликовал MCVE для QProcess несколько дней назад: SO: Создание приложения QT в качестве графического интерфейса для существующего консольного приложения в Windows   -  person Scheff's Cat    schedule 27.07.2017


Ответы (1)


Вы начинаете свой процесс, а затем быстро возвращаетесь. Если вы не планируете подключать какие-либо сигналы из QProcess, вы можете просто статически выделить его, чтобы уберечь себя от использования deleteLater.

Попробуйте что-нибудь вроде этого.

void MainWindow::on_pushButton_clicked()
{
    QProcess process;;

    process.start("~/helloworld.out");
    process.waitForStarted();
    process.waitForFinished();
    process.close();
}

Я рискну и предположу, что, может быть, вы имели в виду не /home/helloworld.out, а ~/helloworld.out. В любом случае проверьте, что путь существует.

person konakid    schedule 04.08.2017