Skip to content

Commit cce369c

Browse files
Merge pull request #10 from Awesome-Embedded-Learning-Studio/feat/standardize_widgets
feat(widget): status-led 中等档标杆改造 + 实例库双文档 pilot + 构建化简
2 parents 7d80f71 + 3183d58 commit cce369c

39 files changed

Lines changed: 1000 additions & 3341 deletions

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ cd Tutorial_AwesomeQt
143143

144144
| 控件 | 说明 |
145145
|------|------|
146-
| [`StatusLED`](widget/statusled/) | 状态指示灯,支持 4 种状态(Normal/Warning/Error/Offline)+ 闪烁动画 |
146+
| [`StatusLED`](widget/status-led/) | 状态指示灯,支持 4 种状态(Normal/Warning/Error/Offline)+ 闪烁动画 |
147147

148-
**构建系统** [`cmake/AwesomeQtWidgets.cmake`](cmake/AwesomeQtWidgets.cmake) 提供了 `awesomeqt_add_widget()` 等函数,支持 INDIVIDUAL(每个控件独立 `.so`)和 MERGED(合并为单一库)两种构建模式
148+
**构建方式** 每个控件是 STATIC 库 + 独立 demo,根 [`widget/CMakeLists.txt`](widget/CMakeLists.txt) 统一配置(C++17 / AUTOMOC / find_package Qt6)。`cd widget && cmake -B build && cmake --build build` 即可构建
149149

150150
---
151151

cmake/AwesomeQtWidgets.cmake

Lines changed: 0 additions & 258 deletions
This file was deleted.

scripts/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const VOLUMES: Volume[] = [
3030
{ name: 'beginner-04-network', srcDir: 'beginner/04-qtnetwork', urlPrefix: '/beginner/04-qtnetwork' },
3131
{ name: 'beginner-05-other', srcDir: 'beginner/05-other-modules', urlPrefix: '/beginner/05-other-modules' },
3232
{ name: 'beginner-06-qml', srcDir: 'beginner/06-qml', urlPrefix: '/beginner/06-qml' },
33-
{ name: 'engineering-s1', srcDir: 'engineering/session1', urlPrefix: '/engineering/session1' },
33+
{ name: 'engineering-instances', srcDir: 'engineering/instances', urlPrefix: '/engineering/instances' },
3434
{ name: 'advanced', srcDir: 'advanced', urlPrefix: '/advanced' },
3535
{ name: 'expert', srcDir: 'expert', urlPrefix: '/expert' },
3636
]

site/.vitepress/config/nav.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ export const navZh: DefaultTheme.NavItem[] = [
2525
{ text: '06 · QML 现代界面', link: '/advanced/06-qml/' },
2626
],
2727
},
28-
{ text: '项目实战', link: '/engineering/session1/' },
28+
{ text: '项目实战', link: '/engineering/' },
2929
]

todo/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,28 @@
55
## 速览
66

77
```
8-
入门 137✅ · 进阶 134✅ · 专家 2/102(COW机制原理✅ + COW容器实战✅,见 expert.md)· 实例库 1·~1075(首波39见 instance-library.md)· examples 271✅
8+
入门 137✅ · 进阶 134✅ · 专家 2/102(01·02 COW 已审结,见 expert.md)· 实例库 1·status-led 中等档标杆✅(双文档pilot)·~1075 · examples 271✅
99
```
1010

1111
## 工作区 → 文件
1212

1313
| 工作区 | 文件 | 内容 | 当下 |
1414
|---|---|---|---|
15-
| 专家层 | [expert.md](expert.md) | 102 篇源码拆解(每篇带 qt_src 行号证据) | ✅ 01 COW 落盘待作者审 |
16-
| 实例库 | [instance-library.md](instance-library.md) | widget/app/model/industrial 成品 + 两套文档 |首波39 可产 |
15+
| 专家层 | [expert.md](expert.md) | 102 篇源码拆解(每篇带 qt_src 行号证据) | ✅ 01·02 COW 已审结 |
16+
| 实例库 | [instance-library.md](instance-library.md) | widget/app/model/industrial 成品 + 两套文档 |status-led pilot 产出·待验格式放量 |
1717
| 基建 | [infra.md](infra.md) | P0/P0.5/P1/P4 + widget 化简 + 地基债 | ✅ 能开干 |
1818
| embedded | [embedded.md](embedded.md) | Layer1 公共基础 + Layer2 板级 | ⚠ 生产方式待定 |
1919
| 延后 | [parked.md](parked.md) | community/translation/interactive/CI门… | 不投入 |
2020

2121
## 当下优先
2222

23-
- 专家层:核实 01 篇落盘 → 推进后续
24-
- 实例库:status-led 改造 → 撑场批
25-
- 基建:widget/ 构建化简(决策已定、未落盘)
23+
- 专家层:01·02 已审结(gate 实质过)→ 推下一篇 qobject 元对象系统
24+
- 实例库:status-led 中等档标杆+双文档pilot✅作者验格式放量 → 撑场批 toggle-switch
25+
- 基建:widget/ 构建化简✅ 已落盘(2026-06-14)→ P0 死链/风格扫描
2626

2727
## gate
2828

29-
- 01 篇落盘待核实 → expert.md
29+
- ✅ 01·02 篇已审结(2026-06-13,gate 实质过)→ expert.md
3030
- embedded 生产方式待定 → embedded.md
3131

3232
## 全量实例清单(参考,非待办)

todo/infra.md

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,27 @@
22

33
> 单点细节批量处理:扫出清单 → 逐个修。
44
5-
## widget/ 构建化简(主活·决策已定·未落盘)
6-
7-
把 widget/ 从「发布库式」瘦身为「教学最小形态」。9 步(A4 须先于 A3,其余可调序):
8-
1. **A4** 移 demo 子目录+重命名:`StatusLEDWindow.{h,cpp}``demo/status_led_window.{h,cpp}``main.cpp``demo/main.cpp`,改 include(类名不动)
9-
2. **A5** `src/status_led.cpp``#include <algorithm>`(真隐患·换发行版编不过)
10-
3. **A3** `statusled/CMakeLists.txt` 换 STATIC 库+demo+子目录自洽 AUTOMOC
11-
4. **A2**`widget/CMakeLists.txt` 换 root-owns-config(砍 MERGE_MODE/install/cache 变量)
12-
5. **A1**`cmake/AwesomeQtWidgets.cmake`(9.5k)+空 cmake/ 目录
13-
6. **B1** `.claude/example_style.md:110` 成员命名改尾下划线(`m_timer``led_size_`,代码零改动只改文档)
14-
7. **B2** 文件头统一 `@file`/`@brief`(禁 @author/@version/@date
15-
8. **C1** 新增 `widget/README.md`(无「专门样本」提法)
16-
9. `.gitignore` 上移 widget/ 根 + 清旧产物 → **E1** `cd widget && cmake -B build && cmake --build build` 一次成功(/tmp 两轮实测过)
17-
18-
边界:不做 SHARED/install/MERGE_MODE/双.so;不迁移 cmake 模块为专门样本;不改局部变量(camelCase 维持)。
5+
## widget/ 构建化简(✅ 已落盘 2026-06-14 · cmake 验证通过)
6+
7+
把 widget/ 从「发布库式」瘦身为「教学最小形态」。9 步(A4 须先于 A3)已全部落盘:
8+
9+
1.**A4** demo 子目录迁移:`StatusLEDWindow.{h,cpp}``demo/status_led_window.{h,cpp}``main.cpp``demo/main.cpp`,改 include(类名不动)
10+
2.**A5** `src/status_led.cpp``#include <algorithm>`
11+
3.**A3** `status-led/CMakeLists.txt` 换 STATIC 库 + `add_subdirectory(demo)`
12+
4.**A2**`widget/CMakeLists.txt` 换 root-owns-config(砍 MERGE_MODE/install/cache)
13+
5.**A1**`cmake/AwesomeQtWidgets.cmake` + 空 `cmake/` 目录
14+
6.**B1** `.claude/example_style.md` 成员命名改尾下划线(⚠ 见遗留①)
15+
7.**B2** 文件头统一 `@file`/`@brief`(删 @author/@version/@date
16+
8.**C1** 新增 `widget/README.md`
17+
9.**E1** `cd widget && cmake -B build && cmake --build build` 一次成功(2026-06-14 实测)
18+
19+
外加:目录重命名 `statusled``status-led`(instance-library kebab 拍板);删冗余 `status-led/.gitignore`(根 `**/build/`·`**/.cache/` 已覆盖)。
20+
21+
边界遵守:无 SHARED/install/MERGE_MODE/双.so;cmake 模块未迁为专门样本;局部变量 camelCase 未动。
22+
23+
### 遗留(待作者定夺)
24+
25+
- **①B1 命名规范与存量矛盾**:✅ 已决(2026-06-14)——采纳 (a) 维持现状。`example_style.md` 规范前瞻用尾下划线,`examples/` 存量 ~7674 处 `m_` 前缀不动(迁移收益低风险高);新 example / 实例库按尾下划线生成。
1926

2027
## P0 清债
2128
- [ ] 死链校验(全库)

todo/instance-library.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
## 首波 39 件(已定 2026-06-12)
1414

1515
### 6 项已拍板
16-
1. statusled 降回 C++17(现 statusled/CMakeLists.txt:6 是 C++23 临时偏差
16+
1. statusled 降回 C++17(widget 化简时已落,C++17 全局设在 widget/CMakeLists.txt
1717
2. 控件命名统一 kebab:`widget/statusled/``widget/status-led/`
1818
3. model 先打穿 undo-redo-framework 作 reference,定范式再放量其余 17
1919
4. automotive-cluster 走纯 QtWidgets 自绘(不碰 QML,否则延后 QML Part6)
2020
5. industrial 整机允许 QtCharts,widget 单控件纯自绘
2121
6. industrial 链接 widget 库 .so 复用(speed-meter/circle-progress/line-chart 先落地)
2222

2323
### widget 栏(13·每族代表·自绘递进链)
24-
路径 `widget/<家族>/<控件名>/`。①status-led✅已落地 ②toggle-switch ③circle-progress ④speed-meter ⑤range-slider ⑥line-chart(纯QPainter) ⑦editable-table ⑧checkbox-tree ⑨checkbox-list ⑩log-viewer ⑪password-edit ⑫ip-edit(P1) ⑬fade-animation(P1)。未覆盖9族首波不碰:calendar/datetime/opengl/specialized/network-widget/data-display/multimedia/map/print。
24+
路径 `widget/<家族>/<控件名>/`。①status-led✅中等档标杆(颜色过渡+呼吸+Q_PROPERTY全+双文档pilot待验格式) ②toggle-switch ③circle-progress ④speed-meter ⑤range-slider ⑥line-chart(纯QPainter) ⑦editable-table ⑧checkbox-tree ⑨checkbox-list ⑩log-viewer ⑪password-edit ⑫ip-edit(P1) ⑬fade-animation(P1)。未覆盖9族首波不碰:calendar/datetime/opengl/specialized/network-widget/data-display/multimedia/map/print。
2525

2626
### app 栏(7旗舰+1拉伸·撑「真库不是片段」)
2727
路径 `app/<类目>/<应用名>/`。image-viewer★5 / sqlite-browser★5 / json-editor★4 / network-tool★4-5 / cpu-memory-monitor★4 / serial-tool★4-5(补入·嵌入式最高频) / tetris★4-5 / ~~audio-visualizer~~(拉伸·须先做模拟数据发生器)。
@@ -39,9 +39,9 @@
3939

4040
### 产出优先序(分批)
4141

42-
> **[格式 gate]** status-led 改造时**同时产 Full + Handbook 两份样板** → 作者验过格式再放量(pilot 纪律,同专家道 01)| paradigm§3
42+
> **[格式 gate]** status-led 已产 Full 导览 + Handbook(入口+01/02/03+troubleshooting)两套样板(2026-06-14,落 `tutorial/engineering/instances/widget/status-led/`)→ 待作者验格式放量后续
4343
44-
阻断前置:status-led 改造(降C++17+重命名) + 确认 awesomeqt_add_widget 模板可批量抄
44+
✅已完成:status-led 基建化简(降C++17+重命名+STATIC库) + 深度改造(中等档:颜色过渡 QPropertyAnimation + 呼吸 QVariantAnimation + Q_PROPERTY 全 + minimumSizeHint) + 双文档 pilot(成品导览 + 手搓手册 5 文件) → 作者验过格式再放量
4545
②撑场批:status-led→toggle→circle→speed-meter→line-chart + image-viewer/sqlite-browser/serial-tool
4646
③覆盖批:password/ip/range-slider/editable-table/checkbox-tree/list/log-viewer/fade + json-editor/network-tool/cpu-mem
4747
④model reference:undo-redo-framework 1个→定范式→其余17放量

0 commit comments

Comments
 (0)