【发布时间】:2012-06-04 09:15:44
【问题描述】:
作为一种爱好,我一直致力于改造一款旧视频游戏,并且我希望尽可能避免重新发明轮子。该游戏在很大程度上基于 GUI,但 GUI 需要在外观方面进行自定义,并且还需要为一些游戏屏幕使用 3D OpenGL 渲染。
为了给你一个想法,这里是最初原型的截图:
使用了很多动画,也使用了 3D,但 GUI 小部件的行为与标准桌面应用程序中的行为非常相似。
到目前为止,我一直在使用我自己的 GUI 库(它不健壮或不完整,而且我遇到了一些问题)。
鉴于 Qt 的声誉和令人印象深刻的功能,以及 Qt 网站上的一些漂亮的屏幕截图,我一直在考虑迁移到 Qt。但我以前从未使用过 Qt,所以我真的不知道它有什么能力,或者学习它需要投入什么样的时间。 (注意我用过 FLTK)。
我的问题是:在这种情况下使用 Qt 是否可行/可行?
更新:在 Qt 中模拟了一些游戏画面后,我决定不使用它。虽然它支持我需要的许多开箱即用的功能(特别是通过样式表),但我需要支持自定义的基于位图的预渲染字体(我无法转换/替换它们)。而且我不能继承 QFont,或者重新实现它而不破坏它在未来的 Qt 版本中。也就是说,Qt 给我留下了深刻的印象(无论是在易用性方面,还是在良好的文档方面)。我将为我自己的引擎借用它的一些功能。感谢所有提供意见的人。
【问题讨论】:
-
简单的答案是肯定的,在这种情况下使用 Qt 是可能的/实用的。为了获得更有效的答案,您可以考虑提出更详细的问题,或者列出您可能对 Qt 有的一些疑问。
-
看看
QGraphicsView/QGraphicsScene架构,应该和你想要的差不多。 -
谢谢大家。好吧,我从来没有使用过 Qt,所以我主要担心的是花了很多时间学习它,发现它不能做我需要的事情。 QGraphicsView 类似乎支持我需要的一些功能。我需要的另一个示例功能是非矩形按钮,例如带有倾斜边缘(我现有的代码使用图像掩码来接受/拒绝鼠标事件)。 Qt 会轻易允许这样的壮举吗?
-
我会编写自定义绘制事件而不是使用 QGraphicsView。把这可能是个人意见。对于非矩形按钮,将它们处理为矩形就“足够好”了(在我看来)。但是仍然可以应用与使用单色图像作为“事件过滤器掩码”相同的想法。你必须自己写,但应该没那么难。
-
谢谢,我想我会选择 Qt。我做了更多调查,看起来 Qt 实际上会为我简化事情。例如, QWidget::setMask() 将为非矩形小部件解决问题。我现在要开始在诺基亚网站上观看培训视频了。