关于部分子窗口隐藏,父窗口删除时机的问题
现在的情况是这样的:
窗口loginDialog是MainWindow的父窗口,login成功之后,loginDialog被隐藏,只显示MainWindow,然后,网络上传来消息,用一个QMessageBox来显示,由于某些原因,这个QMessageBox是以loginDialog作为父窗口的,但是,点击QMessageBox的确定之后,整个程序退出了。不是说只有当子窗口全部关闭的时候,关闭父窗口,程序才退出吗,loginDialog还有一个子窗口MainWindow吗,他怎么能退出?有什么办法让程序继续执行。
[解决办法]
好别扭的逻辑、
教你一个简单但正确的登录后再显示主窗体的办法:、
main()
{
loginDialog *dlg=new ....;
int codec=dlg->exec();获取输入密码结果
delete dlg;删除登录对话框
if(codec==QDialog::Accept)//密码正确
{MainWindow w;w.show)//显示主窗体
...
}
[解决办法]
HIDE()之后窗体不进行消息循环了,所以当前子对话框关闭之后,整个程序就无有消息循环了,自然就over了。建议你在QMessageBox之后SHOW()出来先前的主对话框。
[解决办法]
LoginDialog *a = new LoginDialog;
a->show();
别把自己当父类传进去就好了。 或者你在message之后在hide父类