Skip to content

Commit a0dbfd4

Browse files
40 advanced tutorials for Qt Widgets
1 parent d6e1f7c commit a0dbfd4

265 files changed

Lines changed: 21149 additions & 104 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

TODO.md

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
入门层 ██████████ 118 / 118 篇(代码示例 134 个全部验证通过)
1313
进阶层 █████░░░░░ 62 / 134 篇
1414
专家层 ░░░░░░░░░░ 0 / 142 篇
15-
合计 ███░░░░░░░ 155 / 397
15+
合计 █████░░░░░ 180 / 394
1616
```
1717

1818
---
@@ -38,47 +38,58 @@
3838
</details>
3939

4040
<details>
41-
<summary><strong>03 · QtWidgets 进阶 · 主题能力篇</strong>(10 篇 · ✅ 全部完成)</summary>
41+
<summary><strong>03 · QtWidgets 进阶 · 主题能力篇</strong>(10 篇 · 🔄 重写中)</summary>
4242

43-
全部完成(10/10),归档于 [todo/archive/advanced-03-qtwidgets-thematic-completed.md](todo/archive/advanced-03-qtwidgets-thematic-completed.md)
43+
> 原版本因质量回退(深度不足/风格偏差/内容重复),2026-05-18 起重写。
44+
45+
- [x] 🔴 `01-layout-system-advanced.md` — 布局进阶:尺寸策略与动态布局切换 ✅ 2026-05-18
46+
- [x] 🔴 `02-event-handling-advanced.md` — 事件处理进阶:键盘修饰键与原生事件 ✅ 2026-05-18
47+
- [x] 🔴 `03-model-view-advanced.md` — Model/View 进阶:自定义 Model 与 Delegate ✅ 2026-05-18
48+
- [x] 🔴 `04-qss-advanced.md` — QSS 进阶:动态主题切换与复杂选择器 ✅ 2026-05-18
49+
- [x] 🔴 `05-custom-widget-advanced.md` — 自定义控件进阶:子控件与 QStyle ✅ 2026-05-18
50+
- [x] 🔴 `06-dialog-advanced.md` — 对话框进阶:模态策略与数据验证 ✅ 2026-05-18
51+
- [x] 🔴 `07-main-window-advanced.md` — 主窗口进阶:Dock 管理与状态持久化 ✅ 2026-05-18
52+
- [x] 🟡 `08-graphics-view-advanced.md` — 图形视图进阶:自定义 Item 与碰撞检测 ✅ 2026-05-18
53+
- [x] 🟡 `09-animation-advanced.md` — 动画进阶:状态机驱动与并行动画组 ✅ 2026-05-18
54+
- [x]`10-mdi-advanced.md` — MDI 进阶:子窗口策略与文档管理 ✅ 2026-05-18
4455

4556
</details>
4657

4758
<details>
48-
<summary><strong>03 · QtWidgets 进阶 — 控件速查篇</strong>(与入门层一一对应,共 60 篇)</summary>
49-
50-
> 文件命名规则:将入门层文件名中的 `-beginner` 替换为 `-advanced`,共 60 篇,内容深入至高级 API、性能优化、自定义扩展与工程实践。此处仅列出每篇的进阶重点方向,不再逐条展开知识点(与入门层结构对应):
51-
52-
- [x] 🔴 `11-qwidget-base-advanced.md` — 窗口属性进阶:WA_* 属性、透明背景、无边框窗口拖移 ✅ 2026-05-10
53-
- [x] 🔴 `12-qabstractbutton-base-advanced.md` — 自定义按钮状态机与三态按钮完整实现 ✅ 2026-05-10
54-
- [x] 🟡 `13-qframe-base-advanced.md` — QFrame 作为自定义带阴影容器的绘制实现 ✅ 2026-05-10
55-
- [x] 🟡 `14-qabstractscrollarea-base-advanced.md` — 手动同步双 ScrollArea 与视口坐标计算 ✅ 2026-05-10
56-
- [x] 🔴 `15-qabstractitemview-base-advanced.md` — 视图基类拖放重排、持久化编辑器、虚拟列表 ✅ 2026-05-10
57-
- [x] 🟡 `16-qabstractspinbox-base-advanced.md` ✅ 2026-05-10
58-
- [x] 🔴 `17-qpushbutton-advanced.md` ✅ 2026-05-10
59-
- [x] 🔴 `18-qtoolbutton-advanced.md` ✅ 2026-05-10
60-
- [x] 🔴 `19-qradiobutton-advanced.md` ✅ 2026-05-10
61-
- [x] 🔴 `20-qcheckbox-advanced.md` ✅ 2026-05-10
62-
- [x]`21-qcommandlinkbutton-advanced.md` ✅ 2026-05-10
63-
- [x] 🔴 `22-qlineedit-advanced.md` ✅ 2026-05-10
64-
- [x] 🔴 `23-qtextedit-advanced.md` ✅ 2026-05-10
65-
- [x] 🟡 `24-qplaintextedit-advanced.md` ✅ 2026-05-10
66-
- [x] 🟡 `25-qtextbrowser-advanced.md` ✅ 2026-05-10
67-
- [x]`26-qkeysequenceedit-advanced.md` ✅ 2026-05-10
68-
- [x] 🔴 `27-qcombobox-advanced.md` ✅ 2026-05-10
69-
- [x] 🟡 `28-qfontcombobox-advanced.md` ✅ 2026-05-10
70-
- [x] 🔴 `29-qspinbox-advanced.md` ✅ 2026-05-10
71-
- [x] 🟡 `30-qdatetimeedit-advanced.md` ✅ 2026-05-10
72-
- [x] 🔴 `31-qslider-advanced.md` ✅ 2026-05-10
73-
- [x] 🟡 `32-qscrollbar-advanced.md` ✅ 2026-05-10
74-
- [x] 🟡 `33-qdial-advanced.md` ✅ 2026-05-10
75-
- [x] 🔴 `34-qlabel-advanced.md` ✅ 2026-05-10
76-
- [x] 🔴 `35-qprogressbar-advanced.md` ✅ 2026-05-10
77-
- [x] 🟡 `36-qlcdnumber-advanced.md` ✅ 2026-05-10
78-
- [x] 🟡 `37-qcalendarwidget-advanced.md` ✅ 2026-05-10
79-
- [x] 🔴 `38-qgroupbox-advanced.md` ✅ 2026-05-10
80-
- [x] 🔴 `39-qtabwidget-advanced.md` ✅ 2026-05-10
81-
- [x] 🟡 `40-qtabbar-advanced.md` ✅ 2026-05-10
59+
<summary><strong>03 · QtWidgets 进阶 — 控件速查篇</strong>(与入门层一一对应,共 64 篇)</summary>
60+
61+
> 文件命名规则:将入门层文件名中的 `-beginner` 替换为 `-advanced`,共 64 篇,内容深入至高级 API、性能优化、自定义扩展与工程实践。此处仅列出每篇的进阶重点方向,不再逐条展开知识点(与入门层结构对应):
62+
63+
- [x] 🔴 `11-qwidget-base-advanced.md` — 窗口属性进阶:WA_* 属性、透明背景、无边框窗口拖移 ✅ 2026-05-18
64+
- [x] 🔴 `12-qabstractbutton-base-advanced.md` — 自定义按钮状态机与三态按钮完整实现 ✅ 2026-05-18
65+
- [x] 🟡 `13-qframe-base-advanced.md` — QFrame 作为自定义带阴影容器的绘制实现 ✅ 2026-05-18
66+
- [x] 🟡 `14-qabstractscrollarea-base-advanced.md` — 手动同步双 ScrollArea 与视口坐标计算 ✅ 2026-05-18
67+
- [x] 🔴 `15-qabstractitemview-base-advanced.md` — 视图基类拖放重排、持久化编辑器、虚拟列表 ✅ 2026-05-18
68+
- [x] 🟡 `16-qabstractspinbox-base-advanced.md` — 自定义步进行为、输入验证状态机 ✅ 2026-05-18
69+
- [x] 🔴 `17-qpushbutton-advanced.md` — Default/AutoDefault 键盘处理、带菜单按钮信号抑制 ✅ 2026-05-18
70+
- [x] 🔴 `18-qtoolbutton-advanced.md` — ArrowType 弹出模式时序、工具栏集成 ✅ 2026-05-18
71+
- [x] 🔴 `19-qradiobutton-advanced.md` — QButtonGroup 互斥边界、动态单选组 ✅ 2026-05-18
72+
- [x] 🔴 `20-qcheckbox-advanced.md` — 三态 checkState 传播、PartiallyChecked 树传播 ✅ 2026-05-18
73+
- [x]`21-qcommandlinkbutton-advanced.md` — 平台样式适配、描述文本布局 ✅ 2026-05-18
74+
- [x] 🔴 `22-qlineedit-advanced.md` — QValidator 自定义、输入掩码、补全器集成 ✅ 2026-05-18
75+
- [x] 🔴 `23-qtextedit-advanced.md` — QTextDocument 底层、富文本操作、QTextCursor 高级导航 ✅ 2026-05-18
76+
- [x] 🟡 `24-qplaintextedit-advanced.md` — 块级布局、行号边栏实现、最大块计数性能 ✅ 2026-05-18
77+
- [x] 🟡 `25-qtextbrowser-advanced.md` — 资源加载覆写、历史栈导航 ✅ 2026-05-18
78+
- [x]`26-qkeysequenceedit-advanced.md` — 按键序列捕获、冲突检测 ✅ 2026-05-18
79+
- [x] 🔴 `27-qcombobox-advanced.md` — 弹出定位计算、自定义委托、Model 驱动 ✅ 2026-05-18
80+
- [x] 🟡 `28-qfontcombobox-advanced.md` — 字体枚举过滤、预览委托 ✅ 2026-05-18
81+
- [x] 🔴 `29-qspinbox-advanced.md` — textFromValue/valueFromText 自定义、步进控制 ✅ 2026-05-18
82+
- [x] 🟡 `30-qdatetimeedit-advanced.md` — Section 编辑状态机、时区感知 ✅ 2026-05-18
83+
- [x] 🔴 `31-qslider-advanced.md` — 鼠标到值映射覆写、自定义刻度绘制 ✅ 2026-05-18
84+
- [x] 🟡 `32-qscrollbar-advanced.md` — 滑块尺寸公式、range 与 step 交互 ✅ 2026-05-18
85+
- [x] 🟡 `33-qdial-advanced.md` — 角度到值非线性映射、包装模式 ✅ 2026-05-18
86+
- [x] 🔴 `34-qlabel-advanced.md` — 富文本懒解析、buddy 快捷键、省略模式 ✅ 2026-05-18
87+
- [x] 🔴 `35-qprogressbar-advanced.md` — 无限动画集成、自定义文本覆写 ✅ 2026-05-18
88+
- [x] 🟡 `36-qlcdnumber-advanced.md` — 七段字形映射、自定义段样式 ✅ 2026-05-18
89+
- [x] 🟡 `37-qcalendarwidget-advanced.md` — 日期格式化、单元格自定义、日期范围限制 ✅ 2026-05-18
90+
- [x] 🔴 `38-qgroupbox-advanced.md` — 标题绘制覆写、checkable 子树禁用传播 ✅ 2026-05-18
91+
- [x] 🔴 `39-qtabwidget-advanced.md` — QTabBar + QStackedWidget 协调、可关闭标签 ✅ 2026-05-18
92+
- [x] 🟡 `40-qtabbar-advanced.md` — 标签拖拽重排鼠标事件、关闭按钮自定义 ✅ 2026-05-18
8293
- [ ] 🔴 `41-qstackedwidget-advanced.md` — QStackedWidget 滑动切换动画实现
8394
- [ ] 🔴 `42-qsplitter-advanced.md` — QSplitter 自定义拖动手柄外观与最小宽度约束
8495
- [ ] 🟡 `43-qtoolbox-advanced.md` — QToolBox 自定义标题栏样式与动画展开
@@ -699,9 +710,9 @@
699710
| 层级 | 总篇数 | 已完成 | 进行中 | 未开始 |
700711
|------|--------|--------|--------|--------|
701712
| 入门 | 118 | 118 | 0 | 0 |
702-
| 进阶 | 134 | 32 | 0 | 102 |
713+
| 进阶 | 134 | 62 | 0 | 72 |
703714
| 专家 | 142 | 0 | 0 | 142 |
704-
| **合计** | **397** | **150** | **0** | **247** |
715+
| **合计** | **394** | **180** | **0** | **214** |
705716

706717
---
707718

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
build/
2+
*.user
3+
.idea/
4+
.vscode/
5+
CMakeCache.txt
6+
CMakeFiles/
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.26) # Qt6 要求的最低 CMake 版本
2+
project(01-layout-system-advanced LANGUAGES CXX) # 项目名与语言
3+
4+
set(CMAKE_CXX_STANDARD 17) # 统一 C++17
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 强制要求,不回退
6+
7+
set(CMAKE_AUTOMOC ON) # 自动运行 MOC,处理 Q_OBJECT
8+
set(CMAKE_AUTORCC ON) # 自动处理 .qrc 资源文件
9+
set(CMAKE_AUTOUIC ON) # 自动处理 .ui 文件(如有)
10+
11+
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) # 按需添加模块
12+
13+
qt_add_executable(${PROJECT_NAME} # 生成可执行文件
14+
size_policy_demo.h # 演示控件类声明
15+
size_policy_demo.cpp # 演示控件类实现
16+
main.cpp # 程序入口
17+
)
18+
19+
target_link_libraries(${PROJECT_NAME}
20+
PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets # 按需链接
21+
)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/// @file main.cpp
2+
/// @brief QSizePolicy 进阶演示程序入口。
3+
///
4+
/// 启动 SizePolicyDemo 窗口,展示六种 sizePolicy 策略对比、动态策略切换
5+
/// 以及 stretch 因子对空间分配的影响。
6+
///
7+
/// 对应教程:进阶层 03-QtWidgets/01-布局系统进阶。
8+
9+
#include "size_policy_demo.h"
10+
11+
#include <QApplication>
12+
13+
int main(int argc, char* argv[])
14+
{
15+
QApplication app(argc, argv);
16+
17+
SizePolicyDemo widget;
18+
widget.show();
19+
20+
return app.exec();
21+
}

0 commit comments

Comments
 (0)