我有一个简单的应用程序,从它的主要开始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任务管理器时,我发现进程仍然在内存中,我需要手动杀死它。我该如何防止它发生?
答案 0 :(得分:1)
QDialog :: exec是一个阻塞调用:此代码在QApplication启动之前显示并关闭对话框。
您可以使用QDialog :: show并在QDialog :: accept方法中处理返回代码。