[英]Qt avoid warning QProcess: destroyed while process still running (Assistant)
我正在运行一个启动流程的Qt应用程序。 (从主应用启动的助手)。
当我关闭应用程序时,我得到警告
QProcess:进程仍在运行时被销毁。
我该如何摆脱呢?
我看到了类似的问题并试图杀死……什么都没发生。
这个问题似乎表明也许我应该添加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;
}
使用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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.