与QT的多个窗口

问题描述:

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

在一些我发现的例子中,窗口的布局设置好的在构造函数并在主调用的方法显示(),但我想这样做的主要:

// 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(); 
} 

显示方法对于每个派生窗体都是必须的,它必须返回一个int值,以指示哪个窗口显示(例如,MainMenuForm的Display方法返回2,如果用户想要继续登录窗口,则返回0,如果用户返回0想关闭应用程序);显然,Display方法也必须显示表单。

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

return app.exec(); 

主的结束。

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

+0

基本上在main()函数的末尾建立所有GUI元素 – glezmen 2014-08-28 13:41:06

+0

将每个“Window”创建为不同的QWidget或QMainWindow,然后创建一个实例并在其上调用show()时希望它出现,例如按钮点击或其他东西 – AngryDuck 2014-08-28 15:33:47

+0

任何没有父级的QWidget子类自动变成顶级窗口,当你show()它时。 'app.exec()'启动应用程序的实际事件循环。在此之前,没有可见的事情发生(呃,你*可以*创建对话框(但通常不应该)或显示一个启动窗口)。 – hyde 2014-08-28 17:49:42

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

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