【问题标题】:Qt process stays in memory after application closes应用程序关闭后 Qt 进程保留在内存中
【发布时间】:2011-06-10 07:37:01
【问题描述】:

我有一个简单的应用程序,可以像这样从它的 main 启动 QDialog:

int main(int argc, char *argv[])
 {
     Q_INIT_RESOURCE(resources); 
     QApplication app(argc, argv);
     QCoreApplication::setApplicationName(APP_NAME);
     QCoreApplication::setApplicationVersion(APP_VERISON);
     QCoreApplication::setOrganizationDomain(APP_DOMAIN);
     app.setStyle("WindowsXP");    
     QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

         AuthenticationDialogContainer *pAuthenticationDialogContainer = new AuthenticationDialogContainer();
     if(pAuthenticationDialogContainer->exec() != QDialog::Accepted ) {
         return 0;
     }



     return app.exec();
}

当它通过 app.exec() 之后的应用程序的末尾并且应用程序正在做应该做的事情时。当我打开 windows xp 任务管理器时,我看到该进程仍在内存中,我需要手动终止它。我怎样才能防止它发生?

【问题讨论】:

  • 您应该修改最后一行,以便在返回之前在控制台中打印 app.exec() 的结果。如果没有打印任何内容,则意味着 app.exec() 实际上并没有返回,因此会阻止您的进程结束。

标签: c++ qt process


【解决方案1】:

QDialog::exec 是一个阻塞调用:此代码在 QApplication 启动之前显示并关闭对话框。
您可以使用 QDialog::show 并在 QDialog::accept 方法中处理返回码。

【讨论】:

  • 请详细说明我是 qt 新手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多