编写应用程序核心和gui的最佳实践分离?

时间:2015-08-21 15:12:37

标签: c++ qt user-interface

对不起,如果这听起来有点新鲜。我正在编写一个跨平台的应用程序来学习C ++,如果它能够很好地运行,它可以帮助人们。我希望能够以两种方式使用它:通过设计的GUI(可能正在使用QT),或者通过命令行为想要超越的专家用户使用。

我想知道如何在GUI应用程序和核心之间进行通信,因为这将是开源的,我希望代码是美观和干净的。

有没有通常可以接受的方法呢?

1 个答案:

答案 0 :(得分:3)

您可以遵循一些方法。

  1. 首先编写CLI,然后将GUI编写为独立程序,为所有处理生成CLI版本(通过system(),popen(),fork(),g_spawn(),CreateProcess()或类似的电话)。这可能比编写库稍微繁琐一些,但如果您已经编写了CLI,或者在批处理这样的情况下,GUI只是一个奇特的选择参数,那么效果会很好。

  2. 将应用程序拆分为两个,但分为三个部分:库,GUI和CLI。该库将包含GUI和CLI之间的所有共享逻辑,例如处理输入格式,编辑操作等。 GUI部分将使用库中的函数实现图形界面,CLI将使用相同的库实现命令行界面。

  3. 使GUI应用程序接受命令行参数,并且如果传递的参数指示在CLI模式下调用它,则避免初始化窗口小部件库。对于主要的图形应用程序(例如位图编辑器或需要公开脚本操作的编程IDE),这是可以的。请注意,在Windows上进行此操作需要一些额外的黑客攻击,请参阅this answer。另请注意,这将使在没有窗口系统的服务器上运行应用程序变得更加困难,因为它仍然会链接GUI库。