7

作为一种爱好,我一直致力于改造一个旧的电子游戏,我想尽可能避免重新发明轮子。该游戏大量基于 GUI,但 GUI 需要在外观方面进行自定义,并且还需要为一些游戏屏幕使用 3D OpenGL 渲染。

为了给你一个想法,这里是最初原型的截图:

在此处输入图像描述

使用了很多动画,也使用了 3D,但 GUI 小部件的行为与标准桌面应用程序中的行为非常相似。

到目前为止,我一直在使用我自己的 GUI 库(它不健壮或不完整,而且我遇到了一些问题)。

鉴于 Qt 的声誉和令人印象深刻的功能,以及 Qt 网站上的一些漂亮屏幕截图,我一直在考虑迁移到 Qt。但我以前从未使用过 Qt,所以我真的不知道它有什么能力,或者学习它需要投入什么样的时间。(注意我用过 FLTK)。

我的问题是:在这种情况下使用 Qt 是否可能/实用?

更新:在 Qt 中模拟了一些游戏屏幕后,我决定不使用它。虽然它支持我需要的许多开箱即用的功能(特别是通过样式表),但我需要支持自定义的基于位图的预渲染字体(我无法转换/替换它们)。而且我不能继承 QFont,或者重新实现它而不破坏它在未来的 Qt 版本中。也就是说,Qt 给我留下了深刻的印象(无论是在易用性方面,还是在良好的文档方面)。我将为我自己的引擎借用它的一些功能。感谢所有提供意见的人。

4

2 回答 2

4

根据截图很难知道你的游戏需要做什么;但是,我将在这里呼应其他海报的观点,并提供一些途径供您查看。

第一,您可能想要考虑 QtQuick 而不是 GraphicsView 框架,但这真的取决于您需要做什么。我只是想把它扔在那里作为替代品,这样你就不会错过它。本教程使用 QtQuick 组合了一个非常漂亮的连接四种风格的游戏。这可能比你想要的更简单,但话又说回来,也许不是,这取决于你需要做什么。

其次,在为所有按钮编写自定义绘制事件之前,我会考虑使用Qt 样式表并以类似 CSS 的语法设置小部件的样式。这将允许您以非常灵活的方式非常快速地更改 GUI 的外观和感觉。根据你的截图,我认为你可以从样式表中得到你想要的东西,这比继承和滚动你自己的设置要快得多。但是再一次,根据一张截图很难知道。是一个仅使用 Qt 样式表实现的暗橙色 GUI 示例。样式表的border-radius属性将为您提供圆形按钮( ref)。QPushButton

于 2012-06-04T18:16:40.483 回答
1

上面已经给出了简单的答案,但要提出更多想法:是的,有可能,您可能不需要过多地与 Qt 作斗争。在大多数情况下,对于像这样的高度定制的小部件的推荐建议是子类并自己实现绘制事件。

然后,您可以使用大量基本绘图图元来获取元素的基本形状并从那里扩展。实际上这里有几个问题,其中包含有关如何执行此操作的非常好的资源。

于 2012-06-04T12:03:11.960 回答