2026/04/24

前端开发

来自本地 Obsidian 知识库同步

XUiFarme

TreeX-X/xUiFrame: none

软件架构初期:

主界面

  • 遵循单一职责原则(SRP)

  • 只负责主界面的生命周期管理,布局组装,以及通过信号机制将UI操作转发 管理器或者业务模型

  • 比例布局机制

  • 窗口分辨率适配机制

  • 与业务挂钩的功能,均使用独立的管理器类 进行管理分配

子窗口

参数窗口:

  1. 需要设计通用子类,设计数据传递或者响应节点的机制,以及基本的窗口功能:
  • 统一的边框风格&圆角设计

  • 节点传递机制,用于精准同步数据

  • 初始化函数,用于作为统一行为

  • 数据加载机制,用于更新窗口内控件内容

  • 数据更新机制,用于将变化内容更新到数据中 (此处需要注意 实时响应和确认响应 的不同)

  • 窗口拖动机制


提示窗口:

  1. 纯提示窗口:一定时间后自动消失
  • 允许多行自适应
  • 允许累积内容一次性显示
  1. 等待窗口:长阻塞用于等待下一步操作

  2. 确认窗口:阻塞到用于执行操作后,才会跳转

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条件控制菜单可见性