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

Qt process stays in memory after application closes

本文关键字:内存 进程 Qt 应用程序      更新时间:2023-10-16

我有一个简单的应用程序,可以从它的主要部分启动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()之后的应用程序的末尾,并且应用程序正在做应该做的事情时。当我打开windowsxp任务管理器时,我看到进程仍在内存中,我需要手动终止它。我怎样才能防止它发生?

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