具有QT的多个窗口

Multiple windows with QT

本文关键字:窗口 QT 具有      更新时间:2023-10-16

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

在我发现的一些例子中,窗口的布局是在构造函数中设置的,在主体中被称为方法show(),但我想在主体中做这样的事情:

// 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语句之前、之后还是内部?

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

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