预期是想通过参数判断实现启动不同窗口,将窗口移到 if分支内,发现窗口弹不出来,拿出if外即好
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
if(argc > 5)
{
MainWindow w;
w.show();
}
else
{
OtherDlg dlg;
dlg.show();
}
return a.exec();
}脑抽了,这是一个低级错误,在if 中的变量会在此代码块结束时被释放,哪来的窗口……
解决方式,用指针
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow *w = nullptr;
if(argc > 5)
{
w = new MainWindow();
w->show();
}
int r = a.exec();
if (w != nullptr)
{
delete w; //文明编程,释放内存
}
return r;
}


鄂公网安备 42018502001427号
发表评论