GUI /控制台应用程序代码管理(C ++ / Qt)

时间:2014-03-13 13:15:02

标签: c++ qt user-interface

我正在设计一个应该用作GUI或控制台(命令行)应用程序的应用程序。一次一种模式。当应用程序编译为控制台时,它不应使用任何GUI库。当我第一次做这样的事情时,我想问一下这种情况下的陷​​阱,提示和技巧。什么方法最好?只需使用像#define withGUI 1这样的宏来切换?或者制作类似客户端/服务器解决方案的东西?

2 个答案:

答案 0 :(得分:3)

这个名为Model View Controller (MVC)的设计模式。这将数据的表示与数据本身的模型分开,控制器充当委托,并通过更新模型来控制视图的更新。

Qt提供similar system,但只使用模型和视图。

这里要关注的重点是将数据模型与其可视化表示分离。做到这一点,维护应用程序的GUI和控制台版本将非常简单。

有信号和插槽,很简单;视图(GUI或命令行)所做的任何更改都会导致模型拾取信号。同样,当模型中的数据发生变化时,为连接的视图发出信号以更新其对该数据的表示。

答案 1 :(得分:2)

我会将业务逻辑和GUI完全分离到独立的库中 - 每个库都有一个。在控制台应用程序模式的情况下,我将链接到包含逻辑部分的唯一库,否则链接到两个库。有了这个,您就不需要在代码中的任何地方放置#ifdef -s并使其难以阅读。