使用QMainWindow作为超类切换应用程序“状态”

时间:2017-04-06 20:54:10

标签: c++ qt inheritance polymorphism

我正在尝试运行我的应用程序的不同模式/状态,例如,有一个菜单可以进入游戏状态然后高分,并从那两个回到菜单。

我尝试过的解决方案是使用自动生成的类QMainWindow作为超类来创建类MenuGame。在QMainWindow我稍后想要创建一个QMainWindow,用MenuGame填充,例如。 QMainWindow.paintEvents()通过多态性致电Menu.paintEvent()

现在我知道我无法在另一个QMainWindow中创建QMainWindow,但这个想法是否适用于另一个名为states的子类或现有的超级/子类之间的某个子类(es )?

我能够自己运行Game(而不是QMainWindow),所以继承可能是正确的。但是当尝试在Game中创建并仅运行QMainWindow时,它在sigsegv的{​​{1}}构造函数中给了我一个QMainWindow(我没有改变并且完全没有运行)如果是空的)。我已经解决了包括彼此在内的类的问题,所以这也不是问题。

1 个答案:

答案 0 :(得分:0)

我通过建立一个超级阶段" State"用于菜单和游戏(不使State成为QMainWindow的子类),QMainWindow为每个操作调用它。

这基本上是"州"我意识到实施后存在的模式。