C++ Qt应用程序“;内;应用

C++ Qt应用程序“;内;应用,c++,qt,coding-style,C++,Qt,Coding Style,Qt4.8.2,Windows7x64(但我应该把它看作是一个通用的实现,而不是依赖于操作系统——如果可能的话) 这是一个概念性问题,也是关于实施的问题 我有一个(非常)简单的QApplication。它读取带有“button”标记的XML,对于每个“button”,在布局中添加一个新的QPushButton。这允许我基于配置文件(XML)动态生成gui。我的问题是把它带到“下一个层次” 我想开始将这些按钮与其他模块(例如:QDialog)关联起来,然后这些模块将执行它们必须执行的任何操作 我的

Qt4.8.2,Windows7x64(但我应该把它看作是一个通用的实现,而不是依赖于操作系统——如果可能的话)

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

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

我想开始将这些按钮与其他模块(例如:QDialog)关联起来,然后这些模块将执行它们必须执行的任何操作

我的最终目标是创建一个“读取配置文件”(xml)的应用程序,并根据其信息生成与读取模块数量相同的按钮。在那之后,“连接”按钮“启动命令”(我现在没有更好的措辞)将运行正常的模块将。。。在关闭它之前,您将返回菜单

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

我的问题是:

  • 我够清楚了吗

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

  • 如何着手开发这样的项目?我应该在一个公共解决方案中创建多个项目吗

  • 正如你所看到的,我对软件设计没有太多的知识,所以如果你认为我的问题太基本,并且你有一些你建议我愿意阅读的关于这个主题的书,我承认我有点迷茫,欢迎任何形式的建议

    像往常一样,如果我不够清楚,或者我可以在某些事情上进行扩展,一定要让我知道。我非常感谢在这个话题上给予的任何帮助


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

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

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

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

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

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

    这是不正确的

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

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

    在它的核心,它与命令行应用程序没有什么不同,命令行应用程序等待用户键入一些输入,然后用这些输入做一些事情

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


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

    >当您分解它时,它实际上是一个可以启动流程的应用程序,并通过xml文件进行配置。你确定吗?我的意思是,现在我看到我的描述可能是关闭的,但我不知道如何>,如果你指的是DLL,你想开发其他单独编译的小部件,并能够通过点击按钮动态加载它们是的,我的意思就是。我正在阅读QProcess文档。QProcess不是用来执行“外部”应用程序的吗?(如Firefox、Calc、记事本等)不会。如果是这样的话,开销会很大。是的,我认为你的问题中的描述不清楚,因为你提到了
    .exe
    ,这让我相信你想启动应用程序。是QProcess用于启动外部流程。不,不会有太多开销,贝卡