0

我是一名学生,对于我的论文,我想创建一个基于问题的游戏;我想用QT来阐述图形界面,但我从来没有用过它,我不知道如何创建一个具有多个窗口的应用程序。有一个名为“Form”的基类(抽象)和其他三个继承自 Form 的类:MainMenuForm、LoginForm 和 GameForm。

在我发现的一些示例中,窗口的布局是在构造函数中设置的,并且在 main 中称为方法 show(),但我想在 main 中执行以下操作:

// Creates a FormFactory object and ensures singleton instance
FormFactory * factory;

factory = factorySingleton.GetFactory();

//select a Form to display

int choice = 1;
Form * actualForm;

while (choice != 0)
{
    factory->Init(choice);
    actualForm = factory->ReturnActualForm();
    choice = actualForm->Display();
}

每个派生窗体共有的 Display 方法必须返回一个 int 来指示显示哪个窗口(例如,如果用户想要进入登录窗口,则 MainMenuForm 的 Display 方法返回 2,如果用户想要关闭登录窗口,则返回 0。应用); 显然,Display 方法还必须显示表单。

最后,我注意到在他们写的所有示例中

return app.exec();

在主要的末尾。

对于我的项目,我应该在哪里编写 app.exec()?在while语句之前,之后还是内部?

4

1 回答 1

0

你的设计很糟糕。您引用的代码应该在一个单独的类中,该类在调用 app.exec() 之前被实例化。当前的解决方案只允许选择一次表单,它将显示,当您关闭它时,程序结束。

阅读有关信号和插槽的 Qt 文档,以及如何编写 Qt GUI 应用程序,您需要一种不同的方法。

于 2014-08-28T13:46:55.667 回答