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 运行通过。
1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"id":"58954512","type":"page","status":"current","title":"03.Qt桌面应用开发","version":{"by":{"type":"known","username":"suncaper","userKey":"ff80818177bd0eb50179c1060d480003","profilePicture":{"path":"/images/icons/profilepics/default.svg","width":48,"height":48,"isDefault":true},"displayName":"suncaper","_links":{"self":"https://wiki.suncaper.net/rest/api/user?key=ff80818177bd0eb50179c1060d480003"},"_expandable":{"status":""}},"when":"2025-07-03T04:14:09.174Z","message":"","number":2,"minorEdit":false,"hidden":false,"_links":{"self":"https://wiki.suncaper.net/rest/experimental/content/58954512/version/2"},"_expandable":{"content":"/rest/api/content/58954512"}},"body":{"storage":{"value":"<p><ac:structured-macro ac:name=\"anchor\" ac:schema-version=\"1\" ac:macro-id=\"a46f5037-ac72-4f86-a514-bca88e578375\"><ac:parameter ac:name=\"\">_Toc466556748</ac:parameter></ac:structured-macro><span style=\"color: rgb(54,95,145);\"><strong>目录</strong></span><br /><ac:link><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1 Qt概述 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841977\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.1 什么是Qt ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841978\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.2 Qt的发展史 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841979\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.3 支持的平台 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841980\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.4 Qt版本 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841981\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.5 Qt的下载与安装 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841982\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[下载地址: ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841983\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[Linux Host ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841984\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[OS X Host ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841985\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[Windows Host ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841986\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[安装 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841987\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.6 Qt的优点 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841988\"><ri:page ri:content-title=\"1 Qt概述\" /><ac:plain-text-link-body><![CDATA[1.7 成功案例 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"2 创建Qt项目\" /><ac:plain-text-link-body><![CDATA[2 创建Qt项目 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841990\"><ri:page ri:content-title=\"2 创建Qt项目\" /><ac:plain-text-link-body><![CDATA[2.1 使用向导创建 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841991\"><ri:page ri:content-title=\"2 创建Qt项目\" /><ac:plain-text-link-body><![CDATA[2.2 手动创建 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841992\"><ri:page ri:content-title=\"2 创建Qt项目\" /><ac:plain-text-link-body><![CDATA[2.3 .pro文件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841993\"><ri:page ri:content-title=\"2 创建Qt项目\" /><ac:plain-text-link-body><![CDATA[2.4 一个最简单的Qt应用程序 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"3 第一个Qt小程序\" /><ac:plain-text-link-body><![CDATA[3 第一个Qt小程序 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841995\"><ri:page ri:content-title=\"3 第一个Qt小程序\" /><ac:plain-text-link-body><![CDATA[3.1 按钮的创建 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841996\"><ri:page ri:content-title=\"3 第一个Qt小程序\" /><ac:plain-text-link-body><![CDATA[3.2 对象模型(对象树) ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841997\"><ri:page ri:content-title=\"3 第一个Qt小程序\" /><ac:plain-text-link-body><![CDATA[3.3 Qt窗口坐标体系 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4 信号和槽机制 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471841999\"><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4.1 系统自带的信号和槽 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842000\"><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4.2 自定义信号和槽 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842001\"><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4.3信号槽的拓展 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842002\"><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4.4 Qt4版本的信号槽写法 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842003\"><ri:page ri:content-title=\"4 信号和槽机制\" /><ac:plain-text-link-body><![CDATA[4.5 Lambda表达式 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5 QMainWindow ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842005\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.1 菜单栏 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842006\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.2 工具栏 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842007\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.3 状态栏 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842008\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.4 铆接部件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842009\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.5 核心部件(中心部件) ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842010\"><ri:page ri:content-title=\"5 QMainWindow\" /><ac:plain-text-link-body><![CDATA[5.6 资源文件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6 对话框QDialog ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842012\"><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6.1 基本概念 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842013\"><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6.2 标准对话框 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842014\"><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6.3 自定义消息框 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842015\"><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6.4 消息对话框 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842016\"><ri:page ri:content-title=\"6 对话框QDialog\" /><ac:plain-text-link-body><![CDATA[6.5 标准文件对话框 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"7 布局管理器\" /><ac:plain-text-link-body><![CDATA[7 布局管理器 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842018\"><ri:page ri:content-title=\"7 布局管理器\" /><ac:plain-text-link-body><![CDATA[7.1 系统提供的布局控件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842019\"><ri:page ri:content-title=\"7 布局管理器\" /><ac:plain-text-link-body><![CDATA[7.2 利用widget做布局 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[8 常用控件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842021\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[8.1 QLabel控件使用 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842022\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[显示文字 (普通文本、html) ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842023\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[显示图片 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842024\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[显示动画 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842025\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[8.2 QLineEdit ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842026\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[8.3 其他控件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842027\"><ri:page ri:content-title=\"8 常用控件\" /><ac:plain-text-link-body><![CDATA[8.4 自定义控件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"9 Qt消息机制和事件\" /><ac:plain-text-link-body><![CDATA[9 Qt消息机制和事件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842029\"><ri:page ri:content-title=\"9 Qt消息机制和事件\" /><ac:plain-text-link-body><![CDATA[9.1 事件 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842030\"><ri:page ri:content-title=\"9 Qt消息机制和事件\" /><ac:plain-text-link-body><![CDATA[9.2 event() ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842031\"><ri:page ri:content-title=\"9 Qt消息机制和事件\" /><ac:plain-text-link-body><![CDATA[9.3 事件过滤器 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842032\"><ri:page ri:content-title=\"9 Qt消息机制和事件\" /><ac:plain-text-link-body><![CDATA[9.4 总结 ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"10 绘图和绘图设备\" /><ac:plain-text-link-body><![CDATA[10 绘图和绘图设备 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842034\"><ri:page ri:content-title=\"10 绘图和绘图设备\" /><ac:plain-text-link-body><![CDATA[10.1 QPainter ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842035\"><ri:page ri:content-title=\"10 绘图和绘图设备\" /><ac:plain-text-link-body><![CDATA[10.2 绘图设备 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842036\"><ri:page ri:content-title=\"10 绘图和绘图设备\" /><ac:plain-text-link-body><![CDATA[10.2.1 QPixmap、QBitmap、QImage ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842037\"><ri:page ri:content-title=\"10 绘图和绘图设备\" /><ac:plain-text-link-body><![CDATA[10.2.2 QPicture ]]></ac:plain-text-link-body></ac:link><br /><ac:link><ri:page ri:content-title=\"11 文件系统\" /><ac:plain-text-link-body><![CDATA[11 文件系统 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842039\"><ri:page ri:content-title=\"11 文件系统\" /><ac:plain-text-link-body><![CDATA[11.1 基本文件操作 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842040\"><ri:page ri:content-title=\"11 文件系统\" /><ac:plain-text-link-body><![CDATA[11.2 二进制文件读写 ]]></ac:plain-text-link-body></ac:link><br /><ac:link ac:anchor=\"_Toc471842041\"><ri:page ri:content-title=\"11 文件系统\" /><ac:plain-text-link-body><![CDATA[11.3 文本文件读写 ]]></ac:plain-text-link-body></ac:link></p>","representation":"storage","_expandable":{"content":"/rest/api/content/58954512"}},"_expandable":{"editor":"","view":"","export_view":"","styled_view":"","anonymous_export_view":""}},"extensions":{"position":2},"_links":{"webui":"/pages/viewpage.action?pageId=58954512","edit":"/pages/resumedraft.action?draftId=58954512","tinyui":"/x/EJODAw","collection":"/rest/api/content","base":"https://wiki.suncaper.net","context":"","self":"https://wiki.suncaper.net/rest/api/content/58954512"},"_expandable":{"container":"/rest/api/space/2CT","metadata":"","operations":"","children":"/rest/api/content/58954512/child","restrictions":"/rest/api/content/58954512/restriction/byOperation","history":"/rest/api/content/58954512/history","ancestors":"","descendants":"/rest/api/content/58954512/descendant","space":"/rest/api/space/2CT"}} |