Qt申请"within"申请

Qt Application "within" application

本文关键字:申请 within Qt      更新时间:2023-10-16

Qt 4.8.2,windows 7 x64(但我应该把它看作是一个通用的实现,而不是依赖于操作系统的实现-如果可能的话-)

这是一个概念问题,也是关于执行的问题。

我有一个(非常)简单的Q应用程序。它读取一个带有"button"标记的XML,对于每个"按钮",在布局中添加一个新的QPushButton。这使我能够基于配置文件(XML)动态生成gui。我的问题是把它提升到"下一个层次"。

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

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

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

我的问题是:

  1. 我说得够清楚吗?

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

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

正如你所看到的,我对软件设计没有那么多的知识,所以如果你认为我的问题太基本,并且你有一些书建议我愿意读这个主题的书,我承认我有点迷失了方向,任何建议都是受欢迎的。

和往常一样,如果我不够清楚,或者我可以扩展一些内容,请告诉我。我感谢在这个话题上提供的任何帮助。

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

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

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

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

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

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

这是不正确的。

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

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

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

"大多数AAA"游戏不能按照你的要求进行。你不能只是在一个XML文件中添加一些东西,然后让他们在当前的中加载另一个游戏。它们不是这样建造的,这不是它们的目的。

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