简介
Quik 是一个基于 Qt 的响应式 XML UI 框架。用 XML 声明界面,用 C++ 操作数据,UI 自动同步。
解决的痛点
传统 QWidget 开发存在以下问题:
- UI 代码冗长 - 创建控件、设置属性、添加布局、连接信号槽,一个简单面板动辄上百行
- 数据同步繁琐 - 手动
setText()、setValue(),忘记同步就出 bug - 迭代效率低 - 改个布局要重新编译,调试 UI 耗时耗力
- 代码难以维护 - UI 逻辑和业务逻辑混杂,新人难以接手
Quik 的解决方案:
- XML 声明 UI - 结构清晰,所见即所得
- 响应式绑定 - 赋值即更新,告别手动同步
- 热更新 - 改 XML 立即生效,开发效率翻倍
- 关注点分离 - UI 在 XML,逻辑在 C++,各司其职
AI 开发友好
Quik 对 AI 辅助开发非常友好:
- XML 是标记语言 - LLM 天然擅长生成和理解结构化标记
- C++ 用法极简 -
vm.var<T>()一行搞定,无需复杂的信号槽模板 - 模式固定 - XML + C++ 的组合模式清晰,AI 容易学习和复用
降低开发门槛
Quik 可以有效兜底团队中不同水平的开发者:
- 新手友好 - 不需要深入理解 Qt 信号槽机制,照着模板写 XML 就能出活
- 减少低级错误 - 响应式绑定自动同步,避免忘记更新 UI 的常见 bug
- 代码风格统一 - XML 结构约束了 UI 写法,团队代码一致性更好
- Review 更轻松 - UI 变更一目了然,不用在 C++ 代码里翻找布局逻辑
核心能力
| 能力 | 说明 |
|---|---|
| 声明式UI | XML定义界面结构,自动生成Qt Widgets |
| 响应式绑定 | vm.var 像普通变量,赋值即更新UI |
| 条件渲染 | visible="$enable==1" 表达式控制显隐 |
| 循环渲染 | q-for 数据驱动列表,增删自动同步 |
| 热更新 | 开发时改XML即刷新,无需重编译 |
对比
| 传统Qt | QML | Quik | |
|---|---|---|---|
| UI定义 | C++代码 | QML语言 | XML |
| 数据绑定 | 手动信号槽 | 自动 | 自动 |
| 运行时 | 无 | QML引擎 | 无 |
| 类型安全 | ✓ | ✗ | ✓ |
适用场景
- 工具软件的参数面板、设置对话框
- CAD/CAE 软件的属性编辑器
- 需要快速迭代的交互界面