13b3ebbe14
把川大 wiki「02.Qt方向」课程代码整理为 CMake 管理的可编译运行项目。
Part1 C/C++ 强化 (p01/, 144 目标, host gcc/g++ 构建, 全绿):
- 修复全部编译失败:补 <cstring>/<fstream>/<iomanip>/<vector> 等缺失头
(common_fix + infer_stl_includes 自动检测注入)、修正 pause() 壳注入
(改检测已转换后的 pause 调用)、namespace 提升出函数体、const 成员函数
正确性、dedupe 不再破坏函数重载集、K&R 隐式 int / 动态异常规范等
C++17 移除特性的可编译等价改写。
- 目录采用深缩写 p01/ch04/s03/ (原 part1_cpp/ch04_class_object/03_ctor_dtor)。
Part3 Qt 桌面 (p03/, 29 目标, 隔离 Qt 5.14.2 构建, 全绿):
- gen_part3.py: Qt 外壳模板 (main+QApplication+show, QTimer 自动退出便于
offscreen 验证)、AUTOMOC + .moc include、rewrite_* 处理散文混入/重载/
资源依赖、生成占位 png/gif + .qrc + rundata 样例数据。
- 修正 QLable 笔误、全角分号、.→->、Windows 路径、QApplication 阻塞事件
循环改为 QCoreApplication 等。
任务1 概念/版本验证:
- tools/std_probe.py: 跨 -std= 编译探针 (--pedantic-errors 让已废除特性硬失败)。
- tools/demo_versions/: K&R 隐式 int、三目左值、void* 转换、enum 赋整、
const 经指针、动态异常规范 共 6 个跨版本演示。
- docs/VERSION_NOTES.md: 每条「原文说法→C17/C++17 是否成立→何版本成立→已验证」。
文档: 顶层 README、docs/SOURCE_PAGES.md (页面→目录映射)、
docs/ERRATA.md (Part1 修正)、docs/ERRATA_part3.md (Part3 修正)。
另修复 tools/run.sh / run_qt.sh 的 ${1:?...} 引号语法 bug。
隔离 Qt 验证: ldd 0 系统 Qt 引用; 173/173 目标全绿; p03 offscreen 运行通过。
213 lines
12 KiB
Python
213 lines
12 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
# ==============================================================================
|
||
# file_name_map.py — 每个 (pageId, section_title) → 英文源文件名词根
|
||
#
|
||
# 规则(按用户要求):
|
||
# * 源文件名用英文,与章节/小节名称匹配(按章节号或语义命名)。
|
||
# * 同一小节内有多个源文件时,追加语义后缀区分。
|
||
# * 文件名仅含 [a-z0-9_],蛇形命名。
|
||
#
|
||
# 本表为人工映射,是 gen_part1.py / gen_part3.py 的输入。
|
||
# 键 = (pageId, section_title);值 = 英文词根(不含扩展名/前缀)。
|
||
# ==============================================================================
|
||
|
||
FILE_NAME_MAP = {
|
||
# ---- ch02 intro (58954438) ----
|
||
("58954438", "2.1.1 c++ hello world"): "hello_world",
|
||
|
||
# ---- ch03 C++对C的扩展 (58954439) ----
|
||
("58954439", "3.1 ::作用域运算符"): "scope_resolution_operator",
|
||
("58954439", "3.2.2命名空间使用语法"): "namespace_syntax",
|
||
("58954439", "3.2.3 using声明"): "using_declaration",
|
||
("58954439", "3.2.4 using编译指令"): "using_directive",
|
||
("58954439", "3.3 全局变量检测增强"): "global_variable_detection",
|
||
("58954439", "3.4 C++中所有的变量和函数都必须有类型"): "strict_function_signatures",
|
||
("58954439", "3.5 更严格的类型转换"): "stricter_type_casting",
|
||
("58954439", "3.6 struct类型加强"): "struct_enhancement",
|
||
("58954439", "3.7 \u201c新增\u201dbool类型关键字"): "bool_keyword",
|
||
("58954439", "3.8 三目运算符功能增强"): "ternary_operator",
|
||
("58954439", "3.8.2.3 C/C++中const异同总结"): "const_diff_summary",
|
||
("58954439", "3.9.3 尽量以const替换#define"): "const_vs_define",
|
||
("58954439", "3.10.1 引用基本用法"): "reference_basics",
|
||
("58954439", "3.10.2 函数中的引用"): "reference_in_function",
|
||
("58954439", "3.10.3 引用的本质"): "reference_essence",
|
||
("58954439", "3.10.4 指针引用"): "pointer_reference",
|
||
("58954439", "3.10.5 常量引用"): "const_reference",
|
||
("58954439", "3.11.2 预处理宏的缺陷"): "macro_pitfalls",
|
||
("58954439", "3.11.3.2 类内部的内联函数"): "inline_in_class",
|
||
("58954439", "3.12 函数的默认参数"): "default_arguments",
|
||
("58954439", "3.13 函数的占位参数"): "placeholder_parameters",
|
||
("58954439", "3.14.2.1 函数重载基本语法"): "function_overload_basics",
|
||
("58954439", "3.14.2.2 函数重载实现原理"): "function_overload_mechanism",
|
||
("58954439", "3.14.3 extern \u201cC\u201d浅析"): "extern_c",
|
||
|
||
# ---- ch04 class_object ----
|
||
# 01 基本概念 (58954448)
|
||
("58954448", "4.1.2 类的封装"): "class_encapsulation",
|
||
("58954448", "4.1.3 将成员变量设置为private"): "private_members",
|
||
# 02 面向对象案例 (58954449)
|
||
("58954449", "4.2.1 设计立方体类"): "cube_class_design",
|
||
("58954449", "4.2.2 点和圆的关系"): "point_and_circle",
|
||
# 03 构造和析构 (58954451)
|
||
("58954451", "4.3.2 构造函数和析构函数"): "ctor_and_dtor",
|
||
("58954451", "4.3.3 构造函数的分类及调用"): "ctor_classification",
|
||
("58954451", "4.3.4 拷贝构造函数的调用时机"): "copy_ctor_timing",
|
||
("58954451", "4.3.6 深拷贝和浅拷贝"): "deep_vs_shallow_copy",
|
||
("58954451", "4.3.7.1 初始化列表"): "initializer_list",
|
||
("58954451", "4.3.7.2 类对象作为成员"): "class_object_member",
|
||
("58954451", "4.3.8 explicit关键字"): "explicit_keyword",
|
||
("58954451", "4.3.9.2 C动态分配内存方法"): "c_dynamic_alloc",
|
||
("58954451", "4.3.9.3 new operator"): "new_operator",
|
||
("58954451", "4.3.9.4 delete operator"): "delete_operator",
|
||
("58954451", "4.3.9.5 用于数组的new和delete"): "new_delete_array",
|
||
("58954451", "4.3.9.6 delete void*可能会出错"): "delete_void_ptr",
|
||
("58954451", "4.3.10.1 静态成员变量"): "static_member_variable",
|
||
("58954451", "4.3.10.2 静态成员函数"): "static_member_function",
|
||
("58954451", "4.3.10.3 const静态成员属性"): "const_static_member",
|
||
("58954451", "4.3.10.4 静态成员实现单例模式"): "static_singleton",
|
||
# 04 对象模型 (58954456)
|
||
("58954456", "4.4.1 成员变量和函数的存储"): "member_storage",
|
||
("58954456", "4.4.2.2 this指针的使用"): "this_pointer",
|
||
("58954456", "4.4.2.3 const修饰成员函数"): "const_member_function",
|
||
("58954456", "4.4.2.4 const修饰对象(常对象)"): "const_object",
|
||
# 05 友元 (58954457)
|
||
("58954457", "4.5.1 友元语法"): "friend_syntax",
|
||
# 06 运算符重载 (58954458)
|
||
("58954458", "4.6.2 运算符重载碰上友元函数"): "overload_with_friend",
|
||
("58954458", "4.6.4 自增自减(++/--)运算符重载"): "overload_increment_decrement",
|
||
("58954458", "4.6.5 指针运算符(*、->)重载"): "overload_pointer_operator",
|
||
("58954458", "4.6.6 赋值(=)运算符重载"): "overload_assignment",
|
||
("58954458", "4.6.7 等于和不等于(==、!=)运算符重载"): "overload_equality",
|
||
("58954458", "4.6.8 函数调用符号()重载"): "overload_function_call",
|
||
# 07 继承和派生 (58954461)
|
||
("58954461", "4.7.1.1 为什么需要继承"): "why_inheritance",
|
||
("58954461", "4.7.2 派生类访问控制"): "derived_access_control",
|
||
("58954461", "4.7.3.1 继承中的对象模型"): "inheritance_object_model",
|
||
("58954461", "4.7.3.2 对象构造和析构的调用原则"): "inheritance_ctor_dtor_order",
|
||
("58954461", "4.7.3 继承中同名成员的处理方法"): "same_name_members",
|
||
("58954461", "4.7.5 继承中的静态成员特性"): "static_in_inheritance",
|
||
("58954461", "4.7.6.1 多继承概念"): "multiple_inheritance_concept",
|
||
("58954461", "4.7.6.2 菱形继承和虚继承"): "diamond_virtual_inheritance",
|
||
("58954461", "4.7.6.3 虚继承实现原理"): "virtual_inheritance_mechanism",
|
||
# 08 多态 (58954469)
|
||
("58954469", "4.8.1 多态基本概念"): "polymorphism_basics",
|
||
("58954469", "4.8.2.1 问题抛出"): "upcast_problem",
|
||
("58954469", "4.8.2.1 问题解决方案(虚函数,vitual function)"): "virtual_function_solution",
|
||
("58954469", "4.8.3 C++如何实现动态绑定"): "dynamic_binding",
|
||
("58954469", "4.8.6.1 虚析构函数作用"): "virtual_dtor_purpose",
|
||
("58954469", "4.8.6.2 纯虚析构函数"): "pure_virtual_dtor",
|
||
("58954469", "4.8.7 重写 重载 重定义"): "override_overload_redefine",
|
||
|
||
# ---- ch05 模板 (58954472) ----
|
||
("58954472", "5.2 函数模板"): "function_template",
|
||
("58954472", "5.3 函数模板和普通函数区别"): "template_vs_function",
|
||
("58954472", "5.4 函数模板和普通函数在一起调用规则"): "template_call_rules",
|
||
("58954472", "5.6模板的局限性"): "template_limitations",
|
||
("58954472", "5.7.1 类模板基本概念"): "class_template_basics",
|
||
("58954472", "5.7.2 类模板做函数参数"): "class_template_as_param",
|
||
("58954472", "5.7.3 类模板派生普通类"): "class_template_derives_class",
|
||
("58954472", "5.7.4 类模板派生类模板"): "class_template_derives_template",
|
||
("58954472", "5.7.5 类模板类内实现"): "class_template_in_class_impl",
|
||
("58954472", "5.7.6 类模板类外实现"): "class_template_out_of_class_impl",
|
||
("58954472", "5.7.7 模板类碰到友元函数"): "class_template_friend",
|
||
("58954472", "5.8 类模板的应用"): "class_template_application",
|
||
|
||
# ---- ch06 类型转换 (58954473) ----
|
||
("58954473", "6.1 静态转换(static_cast)"): "static_cast_demo",
|
||
("58954473", "2.2 动态转换(dynamic_cast)"): "dynamic_cast_demo",
|
||
("58954473", "2.3 常量转换(const_cast)"): "const_cast_demo",
|
||
|
||
# ---- ch07 异常 (58954474) ----
|
||
("58954474", "7.1 异常基本概念"): "exception_basics",
|
||
("58954474", "7.2.1 异常基本语法"): "exception_syntax",
|
||
("58954474", "7.2.2 异常严格类型匹配"): "exception_type_matching",
|
||
("58954474", "7.2.3 栈解旋(unwinding)"): "stack_unwinding",
|
||
("58954474", "7.2.4 异常接口声明"): "exception_specification",
|
||
("58954474", "7.2.5 异常变量生命周期"): "exception_variable_lifetime",
|
||
("58954474", "7.2.6 异常的多态使用"): "exception_polymorphism",
|
||
("58954474", "7.3.1 标准库介绍"): "std_exception_library",
|
||
("58954474", "7.3.2 编写自己的异常类"): "custom_exception_class",
|
||
|
||
# ---- ch08 IO流 (58954476) ----
|
||
("58954476", "8.3 标准输入流"): "standard_input_stream",
|
||
("58954476", "8.4.1 字符输出"): "character_output",
|
||
("58954476", "8.4.2 格式化输出"): "formatted_output",
|
||
("58954476", "8.4.4 C++对ASCII文件的读写操作"): "ascii_file_io",
|
||
("58954476", "8.4.5 C++对二进制文件的读写操作"): "binary_file_io",
|
||
|
||
# ---- ch09 STL ----
|
||
# 02 三大组件 (58954487)
|
||
("58954487", "2.4 案例"): "stl_components_case",
|
||
# 03 常用容器 (58954488)
|
||
("58954488", "3.1.2.9 string和c-style字符串转换"): "string_and_c_string",
|
||
("58954488", "3.2.2 vector迭代器"): "vector_iterator",
|
||
("58954488", "3.2.5.1巧用swap,收缩内存空间"): "vector_swap_shrink",
|
||
("58954488", "3.2.5.2 reserve预留空间"): "vector_reserve",
|
||
("58954488", "3.6.3 list容器的数据结构"): "list_data_structure",
|
||
("58954488", "3.7.2.5 set查找操作"): "set_find_operations",
|
||
("58954488", "3.8.3 multimap案例"): "multimap_case",
|
||
# 04 常用算法 (58954498)
|
||
("58954498", "4.1 函数对象"): "function_object",
|
||
("58954498", "4.2 谓词"): "predicate",
|
||
("58954498", "4.3 内建函数对象"): "builtin_function_object",
|
||
("58954498", "4.3 常用遍历算法"): "traversal_algorithms",
|
||
|
||
# ======================================================================
|
||
# Part 3 — Qt 桌面应用开发 (p03)
|
||
# ======================================================================
|
||
# ---- ch02 创建Qt项目 (58954515) ----
|
||
("58954515", "一个最简单的Qt应用程序"): "minimal_qt_app",
|
||
|
||
# ---- ch03 第一个Qt小程序 (58954525) ----
|
||
("58954525", "3.1 按钮的创建"): "button_creation",
|
||
("58954525", "3.2 对象模型(对象树)"): "object_tree_model",
|
||
|
||
# ---- ch04 信号和槽机制 (58954527) ----
|
||
("58954527", "4.1 系统自带的信号和槽"): "builtin_signal_slot",
|
||
("58954527", "4.2 自定义信号和槽"): "custom_signal_slot",
|
||
("58954527", "4.4 Qt4版本的信号槽写法"): "qt4_signal_slot_style",
|
||
("58954527", "4.5 Lambda表达式"): "lambda_signal_slot",
|
||
|
||
# ---- ch05 QMainWindow (58954529) ----
|
||
("58954529", "5.1 菜单栏"): "menubar",
|
||
("58954529", "5.3 状态栏"): "statusbar",
|
||
("58954529", "5.4 铆接部件"): "dock_widget",
|
||
("58954529", "5.5 核心部件(中心部件)"): "central_widget",
|
||
("58954529", "5.6 资源文件"): "resource_file",
|
||
|
||
# ---- ch06 对话框QDialog (58954535) ----
|
||
("58954535", "模态对话框"): "modal_dialog",
|
||
("58954535", "非模态对话框"): "modeless_dialog",
|
||
("58954535", "6.4 消息对话框"): "message_box",
|
||
("58954535", "6.5 标准文件对话框"): "file_dialog",
|
||
|
||
# ---- ch08 常用控件 (58954540) ----
|
||
("58954540", "显示文字 (普通文本、html)"): "label_text",
|
||
("58954540", "显示图片"): "label_pixmap",
|
||
("58954540", "显示动画"): "label_movie",
|
||
("58954540", "设置/获取内容"): "lineedit_content",
|
||
("58954540", "设置显示模式"): "lineedit_echo_mode",
|
||
("58954540", "8.4 自定义控件"): "custom_widget",
|
||
|
||
# ---- ch09 Qt消息机制和事件 (58954546) ----
|
||
("58954546", "9.1 事件"): "mouse_event",
|
||
("58954546", "9.2 event()"): "event_override",
|
||
("58954546", "9.3 事件过滤器"): "event_filter",
|
||
("58954546", "9.4 总结"): "event_summary",
|
||
|
||
# ---- ch10 绘图和绘图设备 (58954548) ----
|
||
("58954548", "10.1 QPainter"): "qpainter_basic",
|
||
("58954548", "10.2.1 QPixmap、QBitmap、QImage"): "paint_device_pixmaps",
|
||
("58954548", "10.2.2 QPicture"): "qpicture_io",
|
||
|
||
# ---- ch11 文件系统 (58954552) ----
|
||
("58954552", "11.1 基本文件操作"): "qfile_basic",
|
||
("58954552", "11.2 二进制文件读写"): "qdatastream_io",
|
||
("58954552", "11.3 文本文件读写"): "qtextstream_io",
|
||
}
|
||
|
||
|
||
def stem_for(pid, section_title):
|
||
"""Return the english filename stem for a (pageId, section_title), or None."""
|
||
return FILE_NAME_MAP.get((pid, section_title)) |