【发布时间】:2017-09-02 02:19:49
【问题描述】:
我正在尝试运行我的应用程序的不同模式/状态,例如,有一个菜单可以进入游戏状态,然后是高分,然后从这两个返回菜单。
我尝试的一个解决方案是使用自动生成的类QMainWindow 作为超类来创建类Menu 和Game。在QMainWindow 中,我稍后想创建一个QMainWindow,用Menu 或Game 填充它,然后在例如。 QMainWindow.paintEvents() 通过多态调用Menu.paintEvent()。
现在我知道我无法在另一个 QMainWindow 中创建 QMainWindow,但是这个想法是否适用于另一个名为 states 的子类或现有超类/子类之间的东西?
我只能自己运行Game(而不是QMainWindow),所以继承可能是正确的。但是,当尝试在QMainWindow 中仅创建和运行Game 时,它在QMainWindow 的构造函数中给了我一个sigsegv(我没有更改它,如果为空,它本身运行完全正常)。我已经解决了包含彼此在内的类的问题,所以这也不是问题。
【问题讨论】:
-
1) 要获得有关 sigsegv 的有用帮助(以及您的问题的其余部分),一些最少的代码将有助于显示您的尝试。 2)您可以在另一个 QMainWindow 中创建一个 QMainWindow,没有什么能阻止您。 3) 很少需要多个 QMainWindows,根据您的描述,您可能甚至不需要一个。该类带有方便的默认功能和布局,但如果您不使用它的菜单栏、停靠小部件等,您最好扩展一个普通的 QWidget 以用作应用程序的主窗口。跨度>
-
非常感谢您的意见。我基本上有 QMainWindow atm,但没有所有菜单和额外功能,所以我可能应该研究如何使用 QWidget。我想我也可以通过拥有一个接收 QMainWindow/QWidget 接收内容的
State类来解决我的主要问题并将其转发给它的子类(没有State本身是一个子类)。
标签: c++ qt inheritance polymorphism