【发布时间】:2016-10-18 12:58:31
【问题描述】:
我正在尝试构建应用程序,它将根据控制台参数选择它是 gui 应用程序还是控制台。
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QCommandLineParser parser;
parser.setApplicationDescription("Test");
parser.addHelpOption();
parser.addVersionOption();
QCommandLineOption guiOption(QStringList() << "g" << "gui", "Gui");
parser.addOption(guiOption);
parser.process(app);
bool isGUI = parser.isSet(guiOption);
APPstub stub(0,isGUI);
if (isGUI) { //GUI APP
static APP_Window ui(&stub); ////*****THIS
ui.show();
}
else { // CONSOLE APP
static APP_Console con(&stub); ////*****THIS
con.showMenu();
}
return app.exec();
}
我发现我需要在条件中创建的那些对象(////*****THIS) 需要是静态的,但我不明白为什么? 问题是:当我在条件之外有例如 APP_Window ui(&stub) 时,它可以工作并显示 gui。 如果我有它在条件之内,窗口会弹出并迅速消失。
我对此感到困惑......你能帮我理解这个问题吗? 谢谢你:)
【问题讨论】: