【问题标题】:Qt avoid warning QProcess: destroyed while process still running (Assistant)Qt避免警告QProcess:在进程仍在运行时被破坏(助手)
【发布时间】:2014-11-18 18:15:24
【问题描述】:

我正在运行一个启动进程的 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;
}

【问题讨论】:

    标签: c++ qt process


    【解决方案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  
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2018-08-05
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多