我一直想用Qt用一个简单的GUI编程一个简单游戏(这将是一个非常简单的游戏,没有什么花哨的)。我一直在想,如何创建多个窗口并在需要时显示它们?例如,战斗屏幕和库存屏幕。用户应该只看到其中一个,但应该能够在需要时访问另一个。我使用堆叠的小部件,但我不确定这是否是正确的方式。此外,在设计器中设计窗口更好还是对其进行编码更好?
StackWidget当然可以完成你想要做的事情。它之所以不总是用于这种事情,是因为它所有的屏幕都是在一开始就预先创建的,并且总是存在的。这意味着初始化需要更长的时间,并且您使用的资源比任何时候所需的资源都多
但正如你所说,如果这是一个简单的游戏,那么我认为它没有什么大问题。同样容易的是,你也可以创建一个空布局,并根据需要交换库存和游戏面板。
将我的投票添加到其他建议使用该设计师的人中。使用设计器然后通过代码操作布局、操作等要容易得多。
你可以在这里看到设计师手册
这就是我的建议:
创建你的"battleScreen.ui"-这是你的战斗屏幕和其中所有东西的设计器文件,然后创建你的"inventory.ui"。这两个文件都可以是QWidget,或者QFrame,或者任何有意义的东西。
然后创建您的"Game.ui",它将成为您的QMainWindow。
在游戏主窗口中,您可以添加QStackWidget,并将库存和战斗屏幕放置在堆栈小部件中。
如果你不知道怎么做。。。1) 将QWidget拖到窗体中(拖到堆栈小部件中)2) 选择新的QWidget并单击鼠标右键。3) 选择"升级到…"4) 填写信息,将QWidget推广到您的库存类提升类名称:库存类的名称头文件:库存类的头文件5) 单击"添加"6) 单击"升级"。
希望能有所帮助。
由于我不确定您的目标是什么,我不能建议堆叠的小部件是否合适,但我认为使用设计器和样式表可以完成很多工作。如果您需要对GUI的某些部分进行编码,您可以随时放入占位符小部件,然后用编码的项目替换它,或者使它们成为占位符的子项。
一般问题的一般答案:
- 使用设计器创建窗口;根据需要隐藏和显示辅助窗口
- 使用流管理器类来管理相关窗口集的可见性
- 堆叠的小部件用于管理其外观根据状态而改变的按钮/图标;不同的表示存在于堆栈中