最初使用:frmLogin w;w.show();//显示登录界面没问题,登录界面可正常运行
加了条件判据发现登录界面闪退
if(g_Caller == ia) {//用户调用才显示登录界面
frmLogin w;
w.show();//显示登录界面
}
改成如下写法登录界面正常显示
if(g_Caller == ia)
{//用户调用才显示登录界面
frmLogin *w = new frmLogin();
w->setModal(true);
w->show();//显示登录界面
}
原因 frmLogin w;是创建在stack上,生命期是大括号内;
frmLogin *w = new frmLogin();通过new创建是在heap上, 在程序退出时才会被析构