GUI /控制台应用程序代码管理(c++ /Qt)
GUI / console application code management (C++/Qt)
我正在设计一个应用程序,应该作为GUI或控制台(命令行)应用程序工作。一次一种模式。当应用程序作为控制台编译时,它不应该使用任何GUI库。由于我是第一次做这样的事情,我想问一下这种情况下的陷阱、技巧和技巧。什么方法是最好的?简单地使用宏像#define withGUI 1
切换?还是制作客户机/服务器解决方案?
有一种设计模式叫做模型-视图-控制器(MVC)。这将数据的表示与数据本身的模型分离开来,控制器充当委托,并通过对模型的更新来控制视图的更新。
Qt提供了一个类似的系统,但只是使用模型和视图。
这里要关注的重点是将数据模型与其可视化表示分离开来。做到这一点,维护应用程序的GUI和控制台版本将变得简单。
有了信号和插槽,就很简单了;视图(GUI或命令行)所做的任何更改都会导致一个信号被模型拾取。同样,当模型中的数据发生变化时,向连接的视图发出信号,以更新该数据的表示。
我会将业务逻辑和GUI完全分离到独立的库中——每个库一个。在控制台应用程序模式下,我将链接到包含逻辑部分的唯一库,否则链接到两个库。这样,您就不需要在代码中到处放置#ifdef-s,从而使其难以阅读。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表