前端开发
XUiFarme
软件架构初期:
主界面
-
遵循单一职责原则(SRP)
-
只负责主界面的生命周期管理,布局组装,以及通过信号机制将UI操作转发 管理器或者业务模型
-
比例布局机制
-
窗口分辨率适配机制
-
与业务挂钩的功能,均使用独立的管理器类 进行管理分配
子窗口
参数窗口:
- 需要设计通用子类,设计数据传递或者响应节点的机制,以及基本的窗口功能:
-
统一的边框风格&圆角设计
-
节点传递机制,用于精准同步数据
-
初始化函数,用于作为统一行为
-
数据加载机制,用于更新窗口内控件内容
-
数据更新机制,用于将变化内容更新到数据中 (此处需要注意 实时响应和确认响应 的不同)
-
窗口拖动机制
提示窗口:
- 纯提示窗口:一定时间后自动消失
- 允许多行自适应
- 允许累积内容一次性显示
-
等待窗口:长阻塞用于等待下一步操作
-
确认窗口:阻塞到用于执行操作后,才会跳转
Undo Redo机制
构思:基于QT底层QUndoStack 自定义实现command机制
结构设计:
-
数据层
-
命令层
-
UI层
UI配置文件
设计配置文件,用于定义UI(界面,风格,子窗口)各项参数
显示测试子工程
用于跳过交互逻辑 直接显示控件和显示窗口效果
软件架构中期:
控件风格化设计
进行统一化管理(包括命名,使用方式),进行风格化定义
类型:
PS:注意统一接口和使用方式
数据响应机制
基于MVVM机制设计:
-
Model层(数据池 Data Pool):纯 C++ 数据结构(如
struct ProjectConfig,CadData)。它不包含任何 UI 逻辑,也不包含任何复杂的算法逻辑。它可能受到读写锁(std::shared_mutex)保护。 -
Algorithm层(后端业务):后台线程。它读取数据池中的 CAD 数据,执行耗时的路径规划(
planToolPath),运算完成后,修改数据池,并发出一个“数据已更新”的底层事件。 -
ViewModel层(中转业务):它是 UI 和数据池之间的翻译官。 它持有数据池的引用。它将数据池里冷冰冰的数据,包装成 Qt 的
Q_PROPERTY或信号槽。 -
View层(前端UI):纯 QML 或 QWidget,只与 ViewModel 绑定。
菜单选项加载机制
核心设计思想:
-
架构设计原理 - MenuZone + Contributor 模式如何解决菜单复杂度问题
-
MenuZone 分类体系 - 10/20/30/40/50/60/70 的分层设计
-
5大Contributor角色 - 强制模式/通用操作/工艺参数/清除/过滤
-
自动分隔符注入机制 - 后处理阶段避免重复的关键设计
-
状态源统一 - 通过property支持V1/V2版本兼容
-
页面特定化逻辑 - currentIndex条件控制菜单可见性