以下代码将导致MainWindow
打开并立即再次关闭:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDir::setCurrent(QCoreApplication::applicationDirPath()); //just to be complete...
if (app.arguments().size() == 1)
{
MainWindow mainWin;
mainWin.show();
}
return app.exec();
}
虽然以下版本与我完全相同,但却按预期显示MainWindow
:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDir::setCurrent(QCoreApplication::applicationDirPath()); //just to be complete...
if (app.arguments().size() == 1)
{
MainWindow mainWin;
mainWin.show();
return app.exec();
}
}
为什么?
答案 0 :(得分:1)
在第一种情况下,块中有MainWindow
,当该块结束时,在进入应用程序事件循环之前,会自动销毁在其中创建的所有内容。在第二种情况下,块将仅在应用程序的事件循环停止后结束。
if (app.arguments().size() == 1)
{
MainWindow mainWin;
mainWin.show();
} // mainWin is destroyed here
return app.exec();