<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cpp_learner的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cpp_learner</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cpp_learner]]></copyright><item><title><![CDATA[QT 隐藏式密码鉴权：一键开启管理员模式]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/166590883</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/166590883</guid><author>cpp_learner</author><pubDate>Thu, 24 Sep 2026 15:48:30 +0800</pubDate><description><![CDATA[本文分享了一种基于键盘输入监听的轻量级鉴权方案，用于实现应用程序中运维权限的临时开启。通过在鼠标点击后全局监听键盘输入，输入正确密码（如123456）即触发权限开放，支持超时自动关闭（首次输入与连续输入间隔均设为3秒或10秒）。该功能已封装为独立类 EavesdropAuthentication，不依赖界面组件，可复用于任意窗口，安全且无日志泄露风险，适用于需临时管理员权限的嵌入式或桌面应用。]]></description><category></category></item><item><title><![CDATA[FFmpeg RTSP播放时钟实现揭秘]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/166483795</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/166483795</guid><author>cpp_learner</author><pubDate>Wed, 23 Sep 2026 16:41:22 +0800</pubDate><description><![CDATA[本文介绍了在使用FFmpeg进行RTSP拉流实时播放时，为解决网络延迟导致画面卡顿的问题，引入“播放时钟”机制。通过维护时间戳与实际时间的同步，利用pts和time_base计算帧应显示时刻，并在未到显示时间时等待，确保播放流畅。结合缓冲队列与时间校准逻辑，有效应对时间戳跳变、断流重连等情况，显著提升播放稳定性与用户体验。]]></description><category></category></item><item><title><![CDATA[Qt 5.14.2 aarch64 静态交叉编译 · 从零搭建完整手册]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/165315039</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/165315039</guid><author>cpp_learner</author><pubDate>Mon, 14 Sep 2026 15:02:06 +0800</pubDate><description><![CDATA[本文详细记录了在麒麟V10 x86_64系统上，从零搭建Qt 5.14.2 aarch64静态交叉编译环境的完整流程。通过使用Bootlin预编译工具链，配置sysroot，清理PC文件，最终成功编译出单文件、无需依赖的ARM静态Qt程序，可在麒麟/UOS目标机直接运行。全程约2-4小时，涵盖工具链安装、源码下载、sysroot扩充、编译配置、验证与部署，支持qmake与CMake项目，实现“零配置”跨平台开发。]]></description><category></category></item><item><title><![CDATA[Qt 5.14.2 x86_64 静态编译 —— 从零搭建完整手册]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/165312659</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/165312659</guid><author>cpp_learner</author><pubDate>Mon, 14 Sep 2026 14:58:28 +0800</pubDate><description><![CDATA[本文详述在银河麒麟V10/openEuler 20.03系统上，从零搭建Qt 5.14.2 x86_64静态编译环境的完整流程。全程仅需终端命令，约1.5小时完成。核心步骤包括：环境清理、源码下载与校验、依赖安装、配置编译（-no-icu）、安装及修复xkbcommon链接。最终生成单文件、零依赖的静态可执行程序，支持任意x86_64 Linux桌面机直接运行。附录含交叉环境隔离、断点续传、内存优化等实用技巧，确保高效落地。]]></description><category></category></item><item><title><![CDATA[Qt5.14.2-aarch64静态交叉编译-从零搭建完整手册]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/164716282</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/164716282</guid><author>cpp_learner</author><pubDate>Wed, 09 Sep 2026 10:32:31 +0800</pubDate><description><![CDATA[本文档详述在麒麟V10 x86_64服务器上，从零构建Qt 5.14.2 aarch64静态交叉编译环境的完整流程。通过使用Bootlin预编译工具链（gcc 7.3.0）和openEuler aarch64开发包扩充sysroot，实现跨架构编译。最终生成单文件、无需依赖的静态Qt程序，可直接在麒麟/UOS ARM桌面系统运行，不需安装任何库或修改配置。涵盖工具链安装、源码下载、sysroot扩展、编译配置及项目部署全流程，全程脚本内嵌，支持离线操作，耗时约2-4小时，适用于国产化桌面应用开发。]]></description><category></category></item><item><title><![CDATA[C++ 实现责任链模式（Chain of Responsibility）：从一堆 if-else 到可插拔的处理管道]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/164450818</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/164450818</guid><author>cpp_learner</author><pubDate>Mon, 07 Sep 2026 09:58:58 +0800</pubDate><description><![CDATA[本文从报销审批的if-else痛点切入，给出C++11完整可编译实现，展示如何构建可插拔处理管道，并用于日志分级、跨线程数据采集等真实场景。]]></description><category></category></item><item><title><![CDATA[FFmpeg 视频裁剪 av_seek_frame 与 avformat_seek_file 两种定位方式全解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/164189714</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/164189714</guid><author>cpp_learner</author><pubDate>Sun, 30 Aug 2026 17:00:00 +0800</pubDate><description><![CDATA[本文面向初学者，讲解用 FFmpeg C++ 裁剪视频（截取 10~20 秒）并重编码的实现。重点对比 av_seek_frame 与 avformat_seek_file 两种关键帧定位方式，附前置知识、流程图、两套完整可运行代码与常见坑排错。]]></description><category></category></item><item><title><![CDATA[FFmpeg 复用全流程解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/164094236</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/164094236</guid><author>cpp_learner</author><pubDate>Thu, 27 Aug 2026 20:27:54 +0800</pubDate><description><![CDATA[介绍 mp4 - 解复用 - 解码 - 编码 - 复用 - mp4 全流程]]></description><category></category></item><item><title><![CDATA[FFmpeg 解复用全流程解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/163638059</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/163638059</guid><author>cpp_learner</author><pubDate>Tue, 11 Aug 2026 15:29:57 +0800</pubDate><description><![CDATA[本文将介绍如何使用FFmpeg的解复用（demuxing）功能结合SDL实现视频播放。主要内容包括：FFmpeg的核心解复用函数（如avformat_open_input、avformat_find_stream_info、av_read_frame等）的使用方法及参数说明；完整的视频解码播放流程（从打开视频文件到最终渲染）；关键步骤的代码示例和错误处理。通过解复用操作，可将封装格式（如MP4）中的音视频数据分离为独立的压缩包，再经解码后由SDL渲染输出。]]></description><category></category></item><item><title><![CDATA[FFmpeg 硬件解码全流程解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/163563929</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/163563929</guid><author>cpp_learner</author><pubDate>Fri, 07 Aug 2026 17:10:35 +0800</pubDate><description><![CDATA[FFmpeg硬件解码流程摘要 FFmpeg硬件解码通过GPU加速处理高分辨率视频（如4K/8K），降低CPU负载。核心流程包括：1）创建硬件设备（av_hwdevice_ctx_create）；2）绑定硬件到解码器；3）解码获取GPU格式帧；4）通过av_hwframe_transfer_data将显存数据拷贝到内存；5）处理转换后的NV12格式帧进行渲染。关键步骤为硬件初始化、解码器绑定和数据传输。支持DXVA2、CUDA等多种硬件加速方案，需根据设备选择对应的AVHWDeviceType和像素格式。]]></description><category></category></item><item><title><![CDATA[FFmpeg 像素格式转换与图像缩放实战]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/163538886</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/163538886</guid><author>cpp_learner</author><pubDate>Fri, 07 Aug 2026 09:41:28 +0800</pubDate><description><![CDATA[本文介绍了FFmpeg中libswscale库的核心函数sws_scale的使用方法，用于图像像素格式转换和尺寸调整。]]></description><category></category></item><item><title><![CDATA[FFmpeg H264视频解码全流程解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/163504959</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/163504959</guid><author>cpp_learner</author><pubDate>Wed, 05 Aug 2026 17:27:15 +0800</pubDate><description><![CDATA[本文介绍了使用FFmpeg解码H.264视频并结合SDL2进行渲染的完整流程。]]></description><category></category></item><item><title><![CDATA[FFmpeg H264视频编码全流程解析]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/163476245</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/163476245</guid><author>cpp_learner</author><pubDate>Wed, 05 Aug 2026 10:23:12 +0800</pubDate><description><![CDATA[本文介绍了使用FFmpeg库生成H.264视频文件的流程，主要包括：1)打开输出文件；2)查找H.264编码器；3)创建并配置编码器上下文；4)打开编码器；5)手动生成YUV420P格式的视频帧数据；6)发送帧到编码器；7)接收编码后的数据包；8)写入文件。文中提供了每个步骤的代码示例和关键API说明，重点讲解了YUV420P格式的数据布局和内存对齐处理注意事项，以及pts时间戳的设置方法。完整流程通过循环生成2000帧视频数据并编码存储为.h264文件。]]></description><category></category></item><item><title><![CDATA[QT 窗体遮罩]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/161392307</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/161392307</guid><author>cpp_learner</author><pubDate>Mon, 25 May 2026 14:54:26 +0800</pubDate><description><![CDATA[本文介绍了如何为Qt应用程序创建半透明遮罩效果，以增强弹窗的用户体验。通过实现MaskWidget类，可以在主窗体上显示半透明黑色遮罩层，使弹窗更加突出。关键实现包括： 创建可重用的遮罩组件，支持设置透明度（默认0.7）和颜色 自动跟随主窗体位置调整遮罩区域 通过事件过滤器处理弹窗显示/隐藏时的遮罩状态 提供简单的API接口：setMainWidget()设置主窗体，setDialogNames()指定需要遮罩的弹窗 使用方法简单，只需初始化MaskWidget实例并关联主窗体和弹窗名称即可。]]></description><category></category></item><item><title><![CDATA[QT 使用 QXlsx 时遇到包含 ＜private/qzipreader_p.h＞ 和 ＜private/qzipreader_p.h＞ 错误的解决方案]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/160915433</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/160915433</guid><author>cpp_learner</author><pubDate>Sat, 09 May 2026 14:47:54 +0800</pubDate><description><![CDATA[本文介绍了在ARM架构统信UOS系统中使用QXlsx库导出Excel文件时遇到的问题及解决方案。由于QXlsx依赖QT私有模块gui-private中的压缩功能，而目标系统缺少QT源码导致编译失败。作者通过引入Quazip开源压缩库替换QXlsx中的私有模块，成功实现了跨平台兼容。文章详细展示了项目配置步骤，包括源码集成、pro文件修改和关键代码替换，最终在ARM架构下实现了Excel导出功能。该方案解决了QT私有模块依赖问题，为类似场景提供了可行参考。]]></description><category></category></item><item><title><![CDATA[QML 网络+串口 调试工具]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/160048776</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/160048776</guid><author>cpp_learner</author><pubDate>Sat, 11 Apr 2026 17:44:59 +0800</pubDate><description><![CDATA[本文介绍了一款基于QML和QT开发的网络调试工具，支持TCP/UDP/串口通信调试。工具采用前后端分离架构：QML负责UI界面，QT处理底层通信逻辑。通过qmlRegisterSingletonType实现C++与QML的交互，核心功能类继承自SocketNetworkBase提供统一接口。工具包含TCP客户端/服务器、UDP客户端和串口调试模块，支持数据收发、格式转换和文件传输等功能，界面采用StackView实现页面切换。项目已在Gitee开源，可作为QML与QT混合开发的参考案例。]]></description><category></category></item><item><title><![CDATA[Linux ARM架构 使用 linuxdeployqt 打包QT程序]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/159948599</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/159948599</guid><author>cpp_learner</author><pubDate>Wed, 08 Apr 2026 13:56:28 +0800</pubDate><description><![CDATA[本文详细介绍了在Linux系统中从零开始搭建QT程序打包环境的完整步骤。通过源码编译方式安装四个关键工具：linuxdeployqt（QT程序打包工具）、appimagetool（生成AppImage）、patchelf（二进制文件修改工具）和libfuse2（文件系统库）。最后演示了如何使用这些工具打包QT程序，包括处理常见的.desktop文件缺失问题，成功生成可独立运行的AppImage文件。所有步骤均配有命令行操作截图，便于读者参考验证。]]></description><category></category></item><item><title><![CDATA[银河麒麟V10+飞腾D2000/8处理器+在线源码编译安装Firefox78.0指南]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/159730189</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/159730189</guid><author>cpp_learner</author><pubDate>Wed, 01 Apr 2026 16:11:29 +0800</pubDate><description><![CDATA[本文详细记录了在ARM架构的麒麟V10系统上编译Firefox 78.0浏览器的全过程。主要包括：下载官方源码、安装依赖包（需使用aptitude解决版本冲突）、配置Node.js 14.x环境、安装Rust工具链（1.41.0版本）、编译cbindgen 0.14.2工具、编写.mozconfig配置文件以及最终编译运行。针对ARM架构的特殊需求，提供了完整的依赖解决方案和编译参数配置，并包含创建桌面快捷方式的方法。整个过程耗时较长，需注意解决各环节的依赖冲突问题。]]></description><category></category></item><item><title><![CDATA[银河麒麟V10+飞腾FT-2000/4处理器+QT源码静态编译5.14.2指南]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/159632625</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/159632625</guid><author>cpp_learner</author><pubDate>Mon, 30 Mar 2026 15:54:15 +0800</pubDate><description><![CDATA[本文记录了在银河麒麟V10系统（Linux 4.4.131内核）上离线编译QT开发环境的完整流程。针对内网机无法联网的情况，详细介绍了从源码编译QT所需的各种依赖库安装步骤，包括gcc、make、pkg-config等基础工具，以及zlib、xcb-proto、Xrender等关键依赖。特别强调了系统时间校准的重要性，并提供了所有依赖库的下载链接。文章还分享了编译过程中遇到的典型问题及解决方法，如renderproto的架构适配问题。最终目标是帮助开发者在类似环境下顺利完成QT开发环境的搭建。]]></description><category></category></item><item><title><![CDATA[Qt Windows版本的《智能鼠标点击器》]]></title><link>https://blog.youkuaiyun.com/cpp_learner/article/details/156359275</link><guid>https://blog.youkuaiyun.com/cpp_learner/article/details/156359275</guid><author>cpp_learner</author><pubDate>Sun, 28 Dec 2025 17:19:18 +0800</pubDate><description><![CDATA[本文介绍了一款基于QT框架开发的Windows智能鼠标点击器工具。该软件具有基础点击和动作序列两大核心功能，支持单次/重复点击、坐标拾取、序列编辑执行等功能。程序采用C++编写，通过Windows API实现鼠标控制，并提供了直观的UI界面。主要特性包括：1) 基础点击功能（单次/重复/无限循环）；2) 动作序列管理（添加/编辑/执行复杂序列）；3) 全局热键控制；4) 实时进度显示。]]></description><category></category></item></channel></rss>