预期是想通过参数判断实现启动不同窗口,将窗口移到 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; }
发表评论