Qt5.9 C++开发指南章节代码实战:从环境搭建到工程避坑
简介面向想要系统掌握跨平台界面开发技术的编程人员本资源提供了一份与Qt5.9版本对应的学习手册以及配合各章节使用的示例工程源码。手册内容覆盖开发软件安装、编译环境准备、工程文件与资源文件配置并重点讲解对象间的信号槽通信和事件处理机制帮助读者从整体上理解图形界面程序的运行流程。压缩包内一共有两千个文件除PDF手册外还包含大量位图图片、界面设计文件、C源代码、工程配置文件及资源列表文件这些文件按章节组织便于直接打开、编译和运行整体大小约三百一十五兆字节。当前已有九百八十九人学习使用。读者通过阅读手册并动手调试示例可以逐步掌握窗口布局、自定义控件、动态资源加载以及程序打包发布等实用技能为后续开发真实的桌面应用打下坚实基础既适合刚接触相关技术的初学者也适合需要系统补充知识的进阶开发者。1. 拿到《Qt5.9 C开发指南.pdf 及章节代码》先跑通示例再翻目录否则你不会真正学会 Qt不少人下载《Qt5.9 C开发指南.pdf 及章节代码》之后第一件事是把 PDF 塞进阅读器代码包却晾在一边。等看到第三章想动手才回头解压工程文件然后卡在环境搭建上迟迟进不去。我见过太多这样的翻车现场书看了大半Qt Creator 还没编译成功过一个工程。这套资源真正的价值不在 PDF 排版而在它挂着的整套章节代码——每个例子都是可以直接编译、运行、改参数的工程跟着改一遍比看十几页正文都顶用。这篇笔记就按一线干活的角度把这个资源包从解压、跑通到自由改造的完整路径讲透配套环境、参数和踩坑一并交代。适合刚接触 Qt5.9 想踏实练 C GUI 的开发者也适合公司里要维护老项目的熟手。2. 为什么是 Qt5.9 与这套章节代码先弄清这代框架的边界再谈怎么写代码2.1 Qt5.9 的定位LTS 分支里最稳的一代老项目和产线至今还在用它Qt5.9 是 Qt5 时代一个承上启下的版本。5.9.7 之后被标记为 LTS长期支持意味着官方在很长一段时间里只修 Bug、不引入破坏性 API 变化。对做产品的人来说这比追新版本重要得多今天编译过的代码三个月后升级补丁不会突然编不过。很多公司代码仓库到今天还跑着 5.9 的库尤其工业上位机、医疗设备界面、检测工具这类追求稳定、不随便升 Qt6 的项目。所以当你拿到《Qt5.9 C开发指南.pdf 及章节代码》时学的不是一套过时的技能而是一套仍在大量存量系统里运行的成熟技术栈。Qt5.9 的类体系和 Qt6 大部分一致只是模块划分有调整——把 5.9 学扎实转 Qt6 的成本极低反过来直接看 Qt6 的教程去维护老代码却很痛苦。这一代的典型技术边界也值得先有数Widgets 与 QML 并存桌面开发主力是 Widgets高 DPI 支持刚起步需要手动设置属性网络、数据库、多线程模块都已成型但缺少 Qt6 里的一些内部优化。这些边界决定了你在写章节代码时哪些写法是时代特色、哪些是通用知识。2.2 章节代码的组织方式从 .pro 到 main.cpp一个标准 Qt 工程的最小骨架这套代码包里的每个章节示例基本都按一个工程一个子目录来组织。用 Qt Creator 打开时认的不是 .cpp 文件而是每个目录下的 .pro 文件。一个最典型的 Widgets 工程 .pro 长这样# 一个典型 Qt5 Widgets 工程描述文件 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets # Qt5 必须追加 widgets 模块 TEMPLATE app TARGET demo_widget CONFIG c11 SOURCES \ main.cpp \ widget.cpp HEADERS \ widget.h这里的QT 是决定链接哪些 Qt 库的关键。写纯控制台程序只需要core做 GUI 必须加gui和widgets。TEMPLATE app告诉 qmake 生成可执行程序而不是静态库TARGET是最终 exe 的名字CONFIG c11允许你用现代 C 语法章节代码里大量 lambda 表达式依赖这个开关。配套的 main.cpp 是所有 GUI 程序的统一入口#include QApplication #include widget.h int main(int argc, char *argv[]) { QApplication a(argc, argv); // 构造应用对象管理 GUI 资源与事件 Widget w; // 创建主窗口实例 w.show(); // 调用 show 让窗口可见 return a.exec(); // 进入事件循环直到窗口关闭才返回 }QApplication是 Qt GUI 程序的地基所有控件、信号槽、事件分发都靠它。w.show()这一步最容易忘——创建窗口对象不代表它就会显示出来必须显式调用 show。a.exec()则是一个不返回的循环程序所有交互都在这个循环里被处理窗口关闭后才跳出循环并结束进程。如果你在章节代码里看到某个按钮点击没反应先检查槽函数有没有执行再检查事件循环是否被某个阻塞调用卡住。2.3 选型先决MinGW 还是 MSVC装错编译器会让整套代码白配这是整套代码落地时第一个真正的坎。Qt5.9 官方提供的二进制安装包严格区分编译器版本MinGW 编译的库不能给 MSVC 链接反之亦然。你安装时不看清组件后面所有工程都会报“无法打开 Qt5Widgetsd.lib”或“cannot find -lQt5Widgets”。环境特点适合场景常见坑MinGW 5.3.0 32-bit开源工具链Qt 官方随包提供自带 GDB 调试器新手学习、无 Visual Studio 的环境路径带空格时命令行编译失败MSVC2015 32/64-bitWindows 原生编译器与 Visual Studio 调试器配合好公司统一用 VS、需要 Windows API 深度联调源码编码问题比 MinGW 多我一般建议你只是跟着章节代码学没有公司约束直接装 MinGW 版本。它不需要额外装 Visual Studio安装包里的 QtCreator 自动配好调试器开箱即用。如果公司技术栈锁定了 MSVC那装 MSVC 套件但要把源码文件编码问题提前处理好后面避坑章节会细说。确定路线后再装环境能省掉一半冤枉时间。3. 用 Qt5.9 在本地跑通第一个章节代码环境搭建与工程打开的完整流程3.1 安装 Qt 5.9 并选对组件版本、安装路径、编译器一次到位通过 Qt 官方安装渠道获取 Qt 5.9 的安装包选 5.9.x 里较新的维护版本。安装时别图省事直接下一步需要在组件选择页做三件事。第一找到对应版本的 Qt 组件展开后勾选你决定好的编译器套件。如果是 MinGW勾选带MinGW字样的组件比如 32-bit 那一个同时记得勾选同一个组件组下Tools里的MinGW编译器和对应的Qt Creator。第二安装路径不要带空格、不要带中文比如D:\Qt\Qt5.9.9就比C:\Program Files\Qt省心得多后面命令行编译时少一大半转义麻烦。第三如果磁盘允许把 Debug 和 Release 两个子选项都装上否则示例工程切构建模式时会提醒你缺少对应库。这套逻辑同样适用于整套代码后续的长期使用MinGW 版本的环境变量不需要你手工配置QtCreator 启动时会自动找到它自己的 qmake 和编译器。真正容易出问题的是你后来又装了别的 Qt 版本导致多套 qmake 互相抢占这个放到避坑章节展开。3.2 正确打开 .pro 工程别用双击源码文件的方式打开工程拿到代码包后先解压到一个干净的目录。有人习惯直接双击目录里的.cpp或.h文件QtCreator 确实能打开但打开的是独立源码视图没有构建菜单也看不到工程文件列表点了运行键只会提示“没有可运行的目标”。正确操作是从 QtCreator 菜单栏选择文件 - 打开文件或项目在弹出的对话框里把文件类型过滤切到“所有文件”然后选中你要打开的那个.pro文件点击打开。QtCreator 读到这个.pro后会弹出一个构建套件选择界面里面列出它检测到的编译器与 Qt 版本组合。这里有个判断技巧如果你只装了 MinGW 的 Qt5.9界面里应该出现一行类似Qt 5.9.x MinGW 32bit的套件选项勾上它即可。如果列表是空的说明组件没装全回到 3.1 再检查。选择完成后QtCreator 会对.pro做一次解析右侧文件树会按 SOURCES、HEADERS、FORMS 分组列出所有源文件左下角开始出现构建和运行按钮。3.3 第一次构建与运行图形界面方式和命令行方式都走一遍图形界面方式最简单确认套件选中后点左下角绿色三角按钮直接运行。QtCreator 会先自动执行 qmake——也就是根据.pro生成 Makefile然后再调用编译器编译最后启动生成的 exe。整个过程里最常见的失败发生在 qmake 步骤报“无法找到 Qt 版本”或qmake: not found多半是套件配置问题而不是代码问题。命令行方式更能帮你理解这套构建体系也方便日后写自动化脚本。假设工程在E:\qt_practice\ch03_demo打开一个终端先手动切换目录再编译mkdir E:\qt_build\ch03_demo # 创建独立的构建目录不要污染源码目录 cd /d E:\qt_build\ch03_demo qmake E:\qt_practice\ch03_demo\ch03_demo.pro -spec win32-g CONFIGdebug mingw32-make -j4 # -j4 用 4 个并行任务加快编译qmake后面跟的是.pro文件的完整路径-spec win32-g告诉 Qt 当前用的是 MinGW 工具链如果你的环境是 MSVC这行要换成-spec win32-msvc编译命令也要换成nmake。CONFIGdebug决定生成带调试信息的版本方便后面打断点。mingw32-make是 MinWG 版的 make等价于 Linux 下的make-j4只是加快多核编译单核机器可以不加。编译完成后构建目录里会生成debug\ch03_demo.exe。注意此时直接双击这个 exe 可能起不来原因是缺少 Qt 的运行库后面避坑章节专门讲windeployqt这里先知道这个现象就够了。3.4 确认“真的跑起来了”从构建输出读懂编译过程第一次成功编译时Qt Creator 下方的输出窗口会刷出大量g -c和g -o的行。这些不是乱码它们记录着每个.cpp文件被编译成.o目标文件、最后被链接成 exe 的过程。你需要关注两类信息第一是警告warning。代码能编过但出现warning: unused parameter或者deprecated declaration说明某些 API 在 Qt5.9 里已有替代品。这类警告尽量处理掉积少成多会掩盖真正的问题。第二是错误error通常带具体文件名和行号比如widget.cpp:17: error: ui was not declared。这类错误点击就能跳到对应行。构建成功之后先别急着高兴。Qt Creator 默认使用独立构建目录shadow build也就是编译产生的中间文件在工程目录旁边的build-工程名-套件名文件夹里。这是故意为之防止脏文件污染源码。但代价是你手动在源码目录新建的文件如果没写进.pro编译时不会被自动拾取这算使用这套代码时最常见的困惑点之一。4. 把章节代码从“能编译”练到“能改”三个高频示例的代码走读与调参实战4.1 从 main.cpp 到 widget.cpp一个标准控件示例的执行顺序章节代码里大量工程都是“一个主窗口 若干控件”的结构。widget.h 声明一个继承自QWidget的类widget.cpp 里写构造函数的实现main.cpp 只负责创建和显示。以最常见的按钮关闭窗口为例// widget.h #ifndef WIDGET_H #define WIDGET_H #include QWidget class QPushButton; // 前置声明减少头文件嵌套 class Widget : public QWidget { Q_OBJECT // 使用信号槽时必须有这个宏 public: explicit Widget(QWidget *parent nullptr); private: QPushButton *m_btn; }; #endif// widget.cpp #include widget.h #include QPushButton Widget::Widget(QWidget *parent) : QWidget(parent) { m_btn new QPushButton(关闭窗口, this); m_btn-setGeometry(20, 20, 120, 40); // 绝对定位方便理解坐标体系 connect(m_btn, QPushButton::clicked, this, Widget::close); }执行顺序是这样的main 里Widget w调用构造函数构造函数里用new创建按钮this作为父对象保证按钮窗口跟随主窗口生命周期setGeometry设置按钮在主窗口内的位置和大小单位是像素左上角为原点。最后connect把按钮的clicked信号连到Widget::close槽点击后关闭窗口。试着改两个参数感受布局把setGeometry换成 40,40,200,80再运行按钮变大了且位置右移下移。这就是这套代码最有效的学习方式——不要光看动手改数字。4.2 信号与槽的两种写法字符串宏与新式函数指针以及参数不匹配的坑信号与槽是 Qt 的“任督二脉”。代码包里会同时出现两种 connect 写法你得能看懂它们// 老式写法用宏字符串编译期不做类型检查 connect(m_btn, SIGNAL(clicked()), this, SLOT(close())); // Qt5 推荐写法函数指针编译期就能发现槽是否存在 connect(m_btn, QPushButton::clicked, this, Widget::close); // 带参数的信号槽函数参数必须兼容 connect(m_combo, QOverloadint::of(QComboBox::currentIndexChanged), this, Widget::onComboChanged);老式SIGNAL/SLOT宏在 Qt5.9 里仍可用但参数写错不会立刻报编译错只在运行时报“No such slot”。新式写法把错误提前到了编译期强烈建议你学新式。第三行是章节代码多线程或者其他实例里常见的重载信号场景QComboBox::currentIndexChanged有int和QString两个重载版本直接用QComboBox::currentIndexChanged会导致编译器不知道取哪个地址必须用QOverloadint::of(...)做显式指明。如果你在改代码时遇到“no matching member function for call to connect”八成就是信号和槽的参数数量或类型对不上。比如clicked带一个bool checked参数你的槽写成无参版其实也能连因为 Qt 的规则允许槽参数少于信号参数但反过来不行。4.3 布局与样式表参数窗口缩放后控件为什么乱跑很多实例用setGeometry做绝对定位但真实项目里这么干会导致窗口一拉伸控件就错位。代码包里涉及布局的实例核心就以下几个参数在起作用QVBoxLayout *layout new QVBoxLayout(this); layout-setSpacing(10); // 控件之间的间距单位像素 layout-setContentsMargins(15, 15, 15, 15); // 布局距窗口边缘的四个边距 layout-addWidget(btnA, 1); // 拉伸因子 1 layout-addWidget(btnB, 3); // 拉伸因子 3窗口变高时 btnB 占更多空间setSpacing控制的是布局内相邻控件的间隔setContentsMargins控制整个布局块距离父窗口四个边界的空白。这两个值过小界面会显得拥挤过大则浪费空间。addWidget的第二个参数是拉伸因子窗口尺寸变化时空间按这个比例分配——按钮 B 会多占空间这是控制界面伸缩行为的主要手段。样式表直接决定控件长什么样代码示例里常见这种写法m_btn-setStyleSheet( QPushButton { background-color: #4A90D9; color: white; border-radius: 4px; padding: 6px 12px; } QPushButton:hover { background-color: #357ABD; } );样式表语法和 CSS 高度相似border-radius控制圆角padding控制内边距:hover是鼠标悬停状态。这套机制最大的价值是不用改 C 逻辑就能调 UI配合 Qt Designer 里右键“更改样式表”所见即所得。需要注意属性和值之间用冒号分隔多条样式用分号分隔漏掉分号这一整条都会被忽略而且不报错属于典型的“黑匣子”问题。5. 避坑Qt5.9 章节代码编译与运行的 5 个高频故障每条都有解决路径5.1 套件下拉框是空的持续显示“没有可用编译器”现象打开.pro文件后Qt Creator 的套件选择列表为空构建按钮是灰色的点不了。原因安装时只勾选了 Qt 运行库组件漏掉了同组里的编译器组件和 Qt Creator 自带工具链或者你后来移动了 Qt 安装目录导致 qmake 路径失效。解决先回到安装器补勾Tools MinGW组件如果目录动过在 Qt Creator 的“选项”里打开套件页先看“Qt 版本”页手动把 qmake.exe 的路径重新指到D:\Qt\Qt5.9.9\5.9.9\mingw53_32\bin\qmake.exe再回“套件”页确认编译器与调试器都指向同一个 MinGW 目录。手动指定后再重启一次 Qt Creator基本能恢复。5.2 源码用 UTF-8 无 BOMMSVC 编译报 C2001 或 C4819 中文乱码现象用 MSVC 套件编译章节代码时源文件里只要出现中文字符串就报error C2001: 常量中有换行符或者警告 C4819。原因MSVC 默认按系统本地代码页中文 Windows 一般是 GBK解析源文件而 Qt Creator 默认按 UTF-8 保存两者不一致导致中文字符被错误切分。解决在 Qt Creator 里把出问题的源文件重新另存为UTF-8 with BOM格式BOM 会让 MSVC 自动识别编码。另一种做法是给.pro加一行编译参数QMAKE_CXXFLAGS /utf-8加了之后 MSVC 明确按 UTF-8 读取源码一劳永逸。用 MinGW 时很少遇到这个因为 GCC 对 UTF-8 兼容更宽松这也是我建议新手先用 MinGW 的原因之一。5.3 链接阶段报“cannot find -lQt5Widgets”或“无法打开 Qt5Widgetsd.lib”现象编译到链接步骤时报找不到 Qt 的库文件文件名里带不带 d 是 Debug 和 Release 的区别。原因当前套件用的编译器和 Qt 库的编译不匹配比如用 MSVC 套件去链接 MinGW 编译出的 Qt 库或者 Qt Creator 构建时链接的是 Release 库但工程指定的构建模式是 Debug。解决确认套件与安装的 Qt 组件严格一致。打开 Qt Creator 的套件页查看当前套件用的 Qt 版本路径里是否含mingw53_32或msvc2015字样和编译器的架构位数对齐。解决后还不行就在命令行运行qmake -query QT_INSTALL_LIBS看 Qt 认为自己该去哪个目录找库再检查.pro里是否用LIBS 手动指定了错误的库路径。5.4 exe 双击闪退Qt Creator 里运行却正常现象在 Qt Creator 里点绿色三角能跑生成窗口正常但去构建目录找到 exe双击后一闪而过没有任何提示。原因exe 运行时找不到 Qt 的 DLL。Qt Creator 启动程序时自动把Qt\5.9.9\mingw53_32\bin等目录加入搜索路径脱离它单独双击就没有这个环境。解决在 Qt 安装目录的bin文件夹里有个部署工具用它在 exe 旁边补齐所有依赖以后的独立分发全靠它cd /d E:\qt_build\ch03_demo\debug D:\Qt\Qt5.9.9\5.9.9\mingw53_32\bin\windeployqt.exe ch03_demo.exewindeployqt会自动扫描 exe 依赖的 Qt DLL把必要的文件复制到当前目录。执行完后再双击 exe就能独立运行了。这个方法同样适用于你需要把章节代码发给别人演示的场景。5.5 用新版离线包或高版本 Creator 打开老工程提示“没有匹配的编译器”现象没装配套的 QtCreator而是用电脑上已有的更高版本 QtCreator 打开代码包构建套件里出现“未匹配”标志整个 Kit 是红色的。原因Qt5.9 时代的工程文件、编译套件描述与新版 QtCreator 的配置结构不完全兼容新版本对老套件做校验时经常判为不可用。解决不要在高版本 Creator 里强行配置老库直接使用 Qt5.9 安装包自带的 Qt Creator。它和你装的 Qt 5.9 库是同一批版本套件默认配好打开即用。如果你必须用高版本 Creator可以手动新建一个套件并把 Qt 版本路径指到 5.9 的qmake.exe但每次构建都可能在代码模型上报一堆解析警告很干扰不值得为此消耗耐心。6. 用调试器把章节代码变成自己的测试台断点、调用栈与一套可复用的最小模板前面解决了“能跑能改”最后这步是“能查”。代码包里那些信号槽、事件、多线程的例子单看代码很难真正理解执行时机你可以用一个极小工程配合断点把调用过程摊开看。6.1 在关键位置打断点观察构造与信号槽的触发顺序新建一个空工程在main.cpp的QApplication a、Widget w、w.show()以及构造函数的connect行各打一个断点。调试运行后你会看到先进入构造函数再执行connect这一行最后才进入exec()。执行到exec()之后再点击按钮才会触发槽函数。断点位置你能看到什么QApplication a应用对象初始化的调用栈Widget构造函数UI 控件创建的先后顺序connect行信号槽连接登记过程槽函数第一行从QMetaObject::activate一路进来的调用栈在槽函数第一行打断点打开“调用栈”窗口你会看到一条从QMetaObject::activate到槽函数的链路这就是 Qt 信号槽最底层的运行机制。很多开发者把信号槽当玄学实际只是 Qt 在运行时通过元对象系统帮你做了一次函数调用。自己亲手看到这条调用栈理解就落地了。6.2 一套可复用最小测试台以后每个示例代码都往里搬把之前的最小工程保存为一个模板以后章节代码里看到想验证的写法直接复制进模板不用每次新建工程重新配环境。# 测试台模板的 .pro固定这一段就够了 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets TEMPLATE app TARGET testbed CONFIG c11 console debug # console 让 qDebug 输出到终端 SOURCES \ main.cpp我早年调一个多线程示例代码里明明调用了QThread::sleep界面却像死住了一样。后来靠这个测试台打断点才发现我在 GUI 线程直接调了阻塞 sleep把事件循环卡住了。这个习惯我一直保留到现在看不懂的章节先拆成最小片段塞进测试台跑比盯着 PDF 空想高效得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Linux进程虚拟地址空间:从页表映射到段错误排查

Linux进程虚拟地址空间:从页表映射到段错误排查

搞Linux服务端开发的人,迟早会遇到这么一幕:程序跑着跑着突然Segmentation Fault,或者free的时候报double free,又或者top里看到某个进程的VIRT高得离谱,但RES却很低。很多人第一反应是查代码、查日志,但真…

2026/10/12 2:53:39 阅读更多 →
ESP32 上实现 ONVIF 相机:从组件搭建到 NVR 添加实战

ESP32 上实现 ONVIF 相机:从组件搭建到 NVR 添加实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:52:39 阅读更多 →
Unturned商业工程源码深度解析:角色控制、物品系统与开放世界加载

Unturned商业工程源码深度解析:角色控制、物品系统与开放世界加载

1. 从一份完整工程里能挖到什么:先看清这套源码的骨架拿到一份完整的商业游戏工程,第一反应不该是急着点开场景跑起来,而是先搞清楚它的目录结构。这就像接手一个别人维护了十年的老仓库,你得先知道货架怎么摆的,再决定…

2026/10/12 2:52:39 阅读更多 →

最新新闻

图解AI应用架构设计:从数据流到组件范式的完整指南

图解AI应用架构设计:从数据流到组件范式的完整指南

做AI应用架构设计这几年,最让我头疼的从来不是技术选型,而是把架构"画"出来。有一次评审会,我盯着投影仪上一张AI应用架构图看了五分钟,愣是没找到"用户请求"是从哪个框进去的。七层嵌套的容器、三十几个带箭…

2026/10/12 3:40:10 阅读更多 →
视觉风格 zine 详解:pptx-master 的 Riso 孔版印刷小刊风演示文稿规范

视觉风格 zine 详解:pptx-master 的 Riso 孔版印刷小刊风演示文稿规范

AI 技能人工智能 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 何雨果出品 项目地址: https://gitcode.com/hugohe3/ppt-master 点击查看…

2026/10/12 3:40:10 阅读更多 →
Pagefind 贡献开发指南:从仓库架构、构建流程到测试套件的完整上手路径

Pagefind 贡献开发指南:从仓库架构、构建流程到测试套件的完整上手路径

搜索引擎前端开发工具 【免费下载链接】pagefind Static low-bandwidth search at scale 项目地址: https://gitcode.com/gh_mirrors/pa/pagefind 点击查看 免费下载 Pagefind 是一款为大规模静态站点提供低带宽搜索的开源方案(仓库根目录 README.md 描…

2026/10/12 3:40:10 阅读更多 →
Claude Code接入MCP搜索服务,实现实时联网查询最新技术资讯

Claude Code接入MCP搜索服务,实现实时联网查询最新技术资讯

自己平时写代码最烦什么?不是需求改来改去,也不是测试环境挂了,而是 Claude Code 在对话里一本正经地跟我说“我无法实时访问互联网,因此无法确认最新信息”。明明只需要查一下某个 API 的最新版本号、某个依赖包现在停在哪个大版…

2026/10/12 3:40:10 阅读更多 →
2026软件测试趋势:从自动化执行到智能质量保障

2026软件测试趋势:从自动化执行到智能质量保障

2026年,如果你还在把“软件测试”定义成点按钮、跑脚本、提bug,那么大概率已经能感受到一种隐约的撕裂感。一边是AI辅助开发把编码效率拉高了几个台阶,另一边是业务对质量的要求从“不出错”变成了“随时可变更、秒级可上线”。在这样的大背景…

2026/10/12 3:40:10 阅读更多 →
数据结构 - > 排序算法

数据结构 - > 排序算法

1. 排序的概念1.1 常见的排序算法1.2 排序算法的评价指标复杂度:评价排序算法的第一大指标就是时间复杂度和空间复杂度,它衡量算法的时间效率和空间效率。稳定性:假定在待排序的数据元素中有两个元素 Ri 和 Rj,它们对应的关键字为…

2026/10/12 3:39:10 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →