2011-06-10 46 views
1

后我有简单的应用程序,从它的主要启动QDialog的是这样的:Qt的过程停留在存储器应用程序关闭

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

您应该修改最后一行,以便在返回之前在控制台中输出app.exec()的结果。如果没有打印出来,那么它意味着app.exec()实际上不会返回,因此阻止了您的进程结束。 – SirDarius 2011-06-10 07:44:54

回答

1

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

+0

请详细说明一下新的qt。 – Newbi 2014-04-03 12:36:19

相关问题