应用程序关闭后,Qt进程保留在内存中

时间:2011-06-10 07:37:02

标签: c++ qt process

我有一个简单的应用程序,从它的主要开始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任务管理器时,我发现进程仍然在内存中,我需要手动杀死它。我该如何防止它发生?

1 个答案:

答案 0 :(得分:1)

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