If you take a look into the implementation of QProcess::~QProcess()
, you will know how QProcess
terminates the process with its destruction. Also, note that QProcess::setProcessState()
is protected, which means you could implement a QDetachableProcess
inherited from QProcess
with a method detach()
to call setProcessState(QProcess::NotRunning);
as a workaround.
For example:
class QDetachableProcess : public QProcess
{
public:
QDetachableProcess(QObject *parent = 0) : QProcess(parent){}
void detach()
{
this->waitForStarted();
setProcessState(QProcess::NotRunning);
}
};
Then you could do things like this:
QDetachableProcess process;
process.setEnvironment(QStringList() << "SOME_ENV=Value");
process.start();
process.detach();