我正在运行启动流程的Qt应用。 (助手,从主应用程序启动)。
当我关闭应用时,我会收到警告
QProcess:在进程仍在运行时销毁。
我怎样摆脱它?
我看到这个similar question并试图杀死......什么都没发生。
这question似乎在说我应该添加waitForFinished()...当应用程序确实关闭时,帮助不会关闭。
Help::Help():m_helpProcess(0) {}
Help::~Help()
{
if (m_helpProcess) {
m_helpProcess.waitForFinished(); // help stays open after app closes
m_helpProcess->kill(); // added with no effect
delete m_helpProcess;
}
}
bool Help::start()
{
if (!m_helpProcess)
process = new QProcess();
QStringList args;
args << QLatin1String("-collectionFile")
<< QLatin1String("mycollection.qhc");
process->start(QLatin1String("Assistant.app"), args);
if (!process->waitForStarted())
return;
}
答案 0 :(得分:1)
使用close()
:
关闭与流程的所有通信并将其终止。调用此函数后,QProcess将不再发出readyRead(),并且无法再读取或写入数据。
Help::~Help()
{
if (m_helpProcess) {
// m_helpProcess->waitForFinished(); // help stays open after app closes
m_helpProcess->close(); // close channels
delete m_helpProcess; // destructor actually kills the process
}
}