Qt申请"在"应用

时间:2012-07-25 20:32:07

标签: c++ qt coding-style

Qt 4.8.2,windows 7 x64(但我应该将其视为通用实现,而非OS依赖 - 如果可能的话 - )

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

我有一个(非常)简单的QApplication。它用"按钮"读取XML。标签,为每个"按钮",添加一个新的QPushButton到布局。这允许我基于配置文件(XML)动态生成gui。我的问题是将它带到下一级"。

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

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

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

我的问题是:

  1. 我清楚了吗?

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

  3. 如何开发此类项目?我应该在一个通用的解决方案中制作多个项目吗?

  4. 正如您所看到的,我对软件设计知之甚少,所以如果您认为我的问题太基础而且您有一本书,那么您建议我愿意阅读这个主题,我承认我有点失落,欢迎任何建议。

    与往常一样,如果我不够清楚或者我可以扩展某些东西,请告诉我。我很欣赏这个主题的任何和各种帮助。

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

2 个答案:

答案 0 :(得分:0)

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

  

之后,将“按钮”连接到DLL?其他.exe文件?哪一个   将作为正常的应用程序运行。

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

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

答案 1 :(得分:0)

  

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

这是不正确的。

“大多数AAA”是单一申请。他们是否使用Action Script或任何特定的脚本语言来构建他们的GUI是无关紧要的。游戏通常是单一的应用程序;你在游戏中总是 始终具有DirectX或OpenGL或任何正在运行的内容,无论您是在游戏中还是在菜单屏幕上。当你开始游戏时,所有发生的事情都是游戏在应用程序中运行一系列功能。

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

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

“大多数AAA”游戏不能做你所要求的。您不能只是在XML文件中添加内容并让它们在当前的中加载另一个游戏。它们不是那样构建的,这不是它们的目的。

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