0

Qt 4.8.2,windows 7 x64(但我应该将其视为通用实现,而不是依赖于操作系统 - 如果可能的话 -)

这是一个概念问题,也是关于实施的问题。

我有一个(非常)简单的 QApplication。它读取带有“按钮”标签的 XML,为每个“按钮”添加一个新的 QPushButton 到布局中。这允许我根据配置文件(XML)动态生成 gui。我的问题是把它带到“下一个层次”。

我想开始将这些按钮与其他模块(例如:QDialog)相关联,然后它们会做他们必须做的任何事情。

我的最终目标是拥有一个“读取配置文件”(xml)的应用程序,并根据其信息生成与读取的模块一样多的按钮。之后,“连接”按钮“启动命令”(我现在没有更好的措辞),它将作为普通模块运行......直到您关闭它,然后您将返回菜单。

我基本上想要一个动态生成的菜单(通过读取 XML 文件),然后连接这些按钮以执行/启动我的模块。我还希望它灵活,所以如果明天我在我的 XML 中添加一个新模块并将该模块添加到 app 文件夹中,我希望它能够启动它。

我的问题是:

  1. 我够清楚了吗?

  2. 游戏通常如何执行流程?例如; 来自视频游戏(在大多数 AAA 中)的“菜单”通常是用动作脚本或类似的东西制作的,然后,当您选择“新游戏”或“加载游戏”等时,它会执行某些其他模块(因为缺少更好的词),特别是新游戏按钮和加载 DirectX 应用程序和内容之间的转换。

  3. 如何开发这样的项目?我应该在一个通用解决方案中创建多个项目吗?

如您所见,我对软件设计知之甚少,因此,如果您认为我的问题太基础,并且您有一些书建议我愿意阅读有关该主题的书,我承认我更多比有点迷失,欢迎任何形式的建议。

与往常一样,如果我不够清楚或者我可以扩展某些内容,请告诉我。我感谢有关此主题的任何和各种帮助。

另外:如果有人认为我应该更改当前标签,请告诉我。我认为这些是最合适的。

4

2 回答 2

0

您可能不需要将其可视化为“应用程序中的应用程序”。当你分解它时,它实际上是一个可以启动进程的应用程序,并通过 xml 文件进行配置。

之后,将按钮“连接”到 DLL?其他 .exe 文件?它将作为普通应用程序运行。

当您说连接到 DLL 时,我不确定您的具体意思是什么……但这真正需要做的就是从您的应用程序中启动一个子进程。如果我单击按钮 A,那么它可以在QProcess中启动 Application A。您的应用程序是父进程,并且知道它何时停止运行。

如果您提到 DLL 时的意思是您想开发其他单独编译的小部件,并且能够通过单击按钮动态加载它们,那么我认为它仍然不是另一个应用程序。您一次只能运行一个 QApplication。如果您导入包含小部件的新模块,它们可以显示在相同的现有事件循环下运行。

于 2012-07-25T20:38:10.880 回答
0

游戏通常如何执行流程?例如; 来自视频游戏(在大多数 AAA 中)的“菜单”通常是用动作脚本或类似的东西制作的,然后,当您选择“新游戏”或“加载游戏”等时,它会执行某些其他模块(因为缺少更好的词),特别是新游戏按钮和加载 DirectX 应用程序和内容之间的转换。

这是不正确的。

“大多数 AAA”是一个单一的应用程序。他们是否使用动作脚本或任何特定的脚本语言来构建他们的 GUI 是无关紧要的。游戏通常是单个应用程序;你总是在游戏中。无论您是在玩游戏还是坐在菜单屏幕上,它总是运行 DirectX 或 OpenGL 或其他任何东西。当您开始游戏时,所发生的只是游戏在应用程序中运行了一系列功能。

它们不一定排列在“模块”或外部世界可以访问甚至知道的其他结构中。它们通常不会“加载”其他代码;它只是调用应用程序中的其他函数。

它的核心与命令行应用程序没有什么不同,它等待用户输入一些输入,然后对该输入执行一些操作。

“大多数 AAA”游戏无法满足您的要求。您不能只是将某些内容添加到 XML 文件中,然后让他们当前游戏中加载另一个游戏。他们不是那样建造的,这不是他们的目的。

如果你想要一个灵活的菜单应用程序来启动其他游戏,那么每个游戏都必须是一个单独的应用程序,并且菜单应用程序应该与所有游戏分开。在这一点上,启动游戏只是启动一个过程。这就是 Steam 和类似工具的工作方式。

于 2012-07-26T19:20:41.317 回答