在 Qt 中制作关于 GUI 窗口的游戏

Posted

技术标签:

【中文标题】在 Qt 中制作关于 GUI 窗口的游戏【英文标题】:Making a game in Qt regarding GUI windows 【发布时间】:2011-06-29 02:56:47 【问题描述】:

我一直想使用 Qt 用简单的 GUI 编写一个简单的游戏(这将是一个非常简单的游戏,没什么花哨的)。我一直想知道的是,如何创建多个窗口并在需要时显示它们?例如,战斗画面和库存画面。用户应该只能看到其中一个,但应该能够在需要时访问另一个。我正在使用堆叠的小部件,但我不确定这是否是正确的方法。另外,在设计器中设计窗口还是编写代码更好?

【问题讨论】:

【参考方案1】:

StackWidget 肯定会完成您想做的事情。它之所以不总是用于这种事情,是因为它所有的屏幕都是一开始就预先创建的,并且一直存在。这意味着初始化需要更长的时间,并且您使用的资源比任何时候都需要更多

但正如你所说,如果这是一个简单的游戏,那么我认为它没有什么大问题。同样简单的是,您还可以创建一个空布局并根据需要交换库存和游戏面板。

将我的一票投给所有建议使用该设计器的人。使用设计器然后通过代码来操作布局、动作等要容易得多。

可以查看Designer手册here

这就是我的建议:

创建您的“battleScreen.ui” - 这是您的战斗画面及其中所有内容的设计器文件,然后创建您的“inventory.ui”。这两者都可以是 QWidgets,或 QFrames,或任何有意义的东西。

然后创建您的“Game.ui”,这将是您的 QMainWindow。

然后,您可以在您的游戏主窗口中添加您的 QStackWidget,并将您的库存和战斗屏幕放置在堆栈小部件中。

如果你不知道该怎么做... 1)将 QWidget 拖入您的表单(进入堆栈小部件) 2)选择新的QWidget并右键单击。 3) 选择“推广到...” 4) 填写信息以将 QWidget 推广到您的库存类 提升类名称:您的库存类的名称 头文件:您的库存类的头文件 5) 点击添加 6) 点击推广。

希望对您有所帮助。

【讨论】:

很好的解释,非常感谢!【参考方案2】:

由于我不确定您的目标是什么,我无法建议堆叠小部件是否合适,但我认为您可以使用设计器和样式表完成很多工作。如果您需要对 GUI 的某些部分进行编码,您可以随时放入占位符小部件,然后将其替换为已编码的项目或将它们设为占位符的子项。

【讨论】:

我倾向于使用堆叠小部件,但我一定会研究样式表,谢谢!【参考方案3】:

一般问题的一般答案:

使用设计器创建您的窗口;根据需要隐藏和显示辅助窗口。 使用流管理器类来管理一组相关窗口的可见性。 堆叠的小部件对于管理外观根据状态而变化的按钮/图标很有用;不同的表示存在于堆栈中。

【讨论】:

以上是关于在 Qt 中制作关于 GUI 窗口的游戏的主要内容,如果未能解决你的问题,请参考以下文章

在 Python GUI 中嵌入 C++ 程序

qt:在一个 gui 窗口中包含 opencv 和 opengl 子窗口

C++ GUI 窗口绘制了代码不应该绘制的形状

Qt - 在窗口上安装布局管理器

GUI制作仿qq窗口

实时控制软件第四周作业