- 博客(125)
- 资源 (100)
- 问答 (2)
- 收藏
- 关注
原创 QT编程过程中遇到的问题
QT编程过程中遇到的问题(一)QT卡死(二)mingw转msvc编码问题(三)vld检测泄漏(一)QT卡死1.有可能是安装了有道翻译,卸载有道翻译(二)mingw转msvc编码问题1.在pro文件中加入msvc { QMAKE_CFLAGS += /utf-8 QMAKE_CXXFLAGS += /utf-8}(三)vld检测泄漏1.是在msvc编译器中的debug模式下...
2021-06-11 11:21:29
3448
3
原创 Codex/Claude配置第三方API
打开模型选择器,点击“管理模型”。点击“添加模型”,选择。分组名称保持,按 Enter 确认。输入在 QLCodeAPI 创建的 API Key,按 Enter 确认。API 类型选择。检查模型名称、模型 ID 和接口地址。
2026-07-22 14:54:17
311
1
原创 ffmpeg(2)-音频相关知识
本文介绍了音频的基础知识和数字音频处理技术。主要内容包括:1)声音的物理本质,包括三要素(频率、振幅、音色)和模数转换过程;2)PCM数字音频的核心参数,如采样率、位深、声道布局及存储方式;3)音频数据量计算和常见编码格式对比,包括无损(WAV、FLAC)和有损(MP3、AAC、Opus)格式;4)分贝和响度的测量标准。文章还详细说明了音频帧概念和不同应用场景下的采样率选择,为音频处理提供了全面的技术参考。
2026-04-12 14:44:53
754
原创 cmake之旅(13)
本文总结了一个完整的CMake实战项目"MathKit"数学工具库的开发过程。项目具有以下特点: 模块化结构:包含加法、减法和高级数学功能模块 多配置支持:同时提供静态库和动态库 完善的项目管理:使用configure_file管理版本和功能开关 工程化实践:包含自定义CMake模块、单元测试、安装导出规则和CPack打包配置 跨平台支持:提供ARM交叉编译工具链文件 项目结构清晰,采用现代CMake实践,展示了生产级项目的完整配置流程,包括版本控制、功能开关、依赖管理和发布打包等关键环
2026-04-12 14:23:57
419
原创 测试覆盖率从35%到80%:我用AI批量生成C++单元测试的完整方案
文章摘要 本文介绍了一个利用AI自动生成C++单元测试的完整解决方案,将测试覆盖率从35%提升到80%。核心方案是通过扫描C++头文件提取接口签名,收集类上下文信息,组装提示词后调用LLM生成测试代码,并经过编译验证后输出可直接使用的测试文件。系统采用头文件为入口点,确保只测试公开接口,并通过自动编译验证循环提升生成代码的可用率(首次通过率70%,修正后达92%)。文章详细展示了头文件扫描器的核心实现,包括类和方法签名的提取逻辑。该方案有效解决了开发团队因测试编写繁琐导致的技术债务问题。
2026-04-11 12:26:52
654
1
原创 cmake之旅(12)
CMake内置的CPack工具可自动将项目打包成不同平台的安装包格式(如.deb/.rpm/.exe/.dmg),复用install()命令定义的安装规则。只需在CMakeLists.txt末尾添加include(CPack)即可生成默认包,也可通过CPACK_*变量自定义包名、版本、描述等信息。支持组件化打包,可将运行时和开发文件分离。典型用法包括配置基本信息、选择打包格式、生成DEB/RPM包等,通过cpack命令即可生成目标平台的安装包。
2026-04-11 11:57:54
395
原创 cmake之旅(11)
本文介绍了使用CMake进行交叉编译的方法。主要内容包括:交叉编译的概念(宿主机与目标机区别)、安装交叉工具链的步骤、编写工具链文件的关键配置(如CMAKE_SYSTEM_NAME、编译器路径等),以及实际应用示例(ARM平台和树莓派)。文章还提供了Android交叉编译的现成方案,并总结了常见问题解决方法,如find_package路径设置和try_run模拟运行等。通过工具链文件,CMake实现了构建逻辑与平台信息的分离,使同一套代码能方便地编译到不同目标平台。
2026-04-11 11:56:06
611
原创 cmake之旅(10)
这篇文章介绍了如何使用CMake的CTest工具和Google Test框架进行自动化测试。主要内容包括: CTest基础用法:通过enable_testing()启用测试功能,使用add_test注册测试用例,测试程序的退出码决定测试结果(0为通过,非0为失败)。 CTest常用参数:如显示详细输出(-V)、失败时显示输出(--output-on-failure)、正则匹配测试(-R)等。 集成Google Test框架:通过FetchContent自动下载GTest,编写测试用例(TEST宏),使用gt
2026-04-10 09:47:59
377
原创 cmake之旅(9)
"安装"就是把编译好的产物(库文件、头文件、可执行文件等)复制到系统的标准目录中。内容默认路径说明可执行文件可直接在终端运行库文件.a 和 .so 文件头文件公开头文件CMake 配置文件/usr/local/lib/cmake/<包名>/让 find_package 能找到安装后,其他项目就可以像使用系统库一样使用你的库了。安装路径由变量控制,默认值是/usr/local。这一篇我们学会了用install安装库文件和头文件,用和导出 CMake 配置文件,让别人可以通过找到并使用我们的库。
2026-04-10 09:46:15
278
原创 当C++遇上提示词工程:我用大模型重构了团队的代码审查
本文介绍了一个利用大模型重构代码审查流程的实践案例。作者针对团队C++代码审查效率低下的痛点,开发了一个500行的C++工具,通过Git Hook触发,提取代码diff并调用LLM API进行预审查。文章重点剖析了提示词工程的关键作用,展示了从简单提示词到融合角色设定、Few-shot示例和思维链的PromptBuilder三版演进过程,最终将问题识别率从30%提升至85%,使团队代码审查时间从2小时缩短至40分钟,显著提升了审查质量和效率。
2026-04-09 09:57:52
965
原创 cmake之旅(8)
摘要:Modern CMake 的 target 思维与传统方式的对比 本文对比了传统 CMake 与现代 CMake 的主要区别,重点阐述了 Modern CMake 以 target 为核心的设计理念。传统 CMake 采用全局命令会导致依赖关系不透明、全局污染等问题,而 Modern CMake 通过 target_xxx 系列命令实现了以下优势: 每个目标明确声明自身需求 使用 PUBLIC/PRIVATE/INTERFACE 精确控制依赖传播 自动传递依赖关系,避免手动管理 文章通过具体示例展示了
2026-04-09 09:36:02
506
原创 cmake之旅(7)
本文介绍了CMake中控制代码行为的几种方法: 使用option定义编译开关,通过命令行参数控制选项状态 通过target_compile_definitions传递宏定义给C++代码 使用configure_file生成配置头文件,集中管理配置项 设置CMAKE_BUILD_TYPE控制构建类型(Debug/Release等) 通过target_compile_options传递编译器选项 这些技术可以实现条件编译、功能开关、版本控制等需求,使CMake与代码能够协同工作。文中提供了详细示例,包括配置模板
2026-04-09 09:33:54
374
原创 搞了半年AI编码工具,聊聊它到底改变了我什么?
本文分享了作者使用AI编码工具半年后的真实体验。作为有6年C++开发经验的程序员,作者最初被实习生用AI工具快速生成日志模块的案例震撼。经过实践,作者认为AI工具虽然不能替代思考,但能大幅提升"想清楚后仍需手动编码"的效率。 特别适用于: 模板化代码生成(如C++的样板代码) 快速原型开发(如INI配置管理器的完整实现) 代码补全与优化建议 作者通过实际案例展示了AI工具如何帮助快速生成高质量、可维护的代码,同时也指出仍需人工把控设计逻辑和代码质量。
2026-04-08 11:42:10
735
原创 cmake之旅(6)
本文介绍了CMake中查找和使用第三方库的方法。主要内容包括:1)最简单的第三方库使用示例(Threads库);2)find_package的两种模式(Module模式和Config模式)及其区别;3)find_package成功后提供的两种使用方式(传统变量方式和推荐的导入目标方式);4)实战演示使用nlohmann/json库的两种方法(系统安装+find_package和FetchContent方式)。文章强调现代CMake更推荐使用导入目标方式,并详细解释了各种使用场景下的最佳实践。
2026-04-08 11:10:06
583
原创 cmake之旅(5)
本文介绍了CMake中的代码复用机制,包括函数(function)、宏(macro)和.cmake模块文件。首先对比了宏和函数的区别:宏是文本替换没有独立作用域,而函数有独立作用域不会泄漏变量。然后通过实战演示如何封装模块构建逻辑,将重复代码封装为函数。最后介绍了.cmake模块文件的使用方法,通过include命令可以复用封装好的功能。文章建议优先使用函数,只有在需要变量泄漏特性时才考虑使用宏,并推荐将常用功能封装为.cmake模块以便项目间复用。
2026-04-08 10:55:08
424
原创 cmake之旅(4)
本文介绍了CMake中静态库与动态库的区别及构建方法。静态库在编译时被完整复制到可执行文件中,生成.a或.lib文件,可执行文件独立运行但体积较大;动态库在运行时加载,生成.so、.dylib或.dll文件,可执行文件较小但需依赖库文件。文章详细演示了在CMake中如何显式构建静态库(STATIC)和动态库(SHARED),并介绍了让用户通过BUILD_SHARED_LIBS变量选择库类型的方法,以及同时构建两种库类型的技巧。
2026-04-07 14:10:22
442
原创 cmake之旅(3)
本文介绍了如何使用CMake管理多目录项目。通过add_subdirectory命令,可以让每个模块拥有独立的CMakeLists.txt文件,顶层文件负责统一管理。文章展示了如何将项目改造为分层结构,使用add_library将模块编译为静态库,并通过target_link_libraries进行链接。同时对比了include_directories和target_include_directories的区别,后者可以更精准地控制依赖关系。还解释了PRIVATE、PUBLIC、INTERFACE三种可见性
2026-04-07 13:58:17
436
原创 cmake之旅(2)
本文介绍了CMakeLists.txt的核心语法,通过一个简单的C++项目演示了CMake的基本使用方法。主要内容包括:1) cmake_minimum_required设置最低版本要求;2) project定义项目名称和自动变量;3) message打印调试信息;4) set定义变量和管理源文件列表;5) 常用CMake内置变量如C++标准设置;6) add_executable生成可执行文件;7) include_directories指定头文件搜索路径。文章最后给出了一个完整的多文件项目示例,展示了这
2026-04-07 11:37:15
570
原创 git完整工作流程
本文提供了Git多人协作开发的完整工作流程指南,重点包括: 仓库初始化 - 创建远程仓库、克隆到本地、配置用户信息 分支管理 - 推荐的分支模型(main/develop/feature等)、创建/切换/删除分支操作 日常开发 - 文件状态检查、提交规范、查看历史记录和差异 代码同步 - 推送与拉取操作、fetch与pull的区别 代码合并 - merge和rebase两种方式的用法及场景 指南采用实际项目背景编写,包含详细的命令行示例和最佳实践说明,特别强调了提交信息规范和分支管理策略,适合团队协作开发参
2026-03-30 10:33:52
343
原创 QT交叉编译环境配置
我使用的是gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu。的轻量级开源库,常用于 嵌入式 Linux 系统 上的电阻式或电容式触摸屏。创建set_arm_env.sh文件,将下面内容复制进去。打开命令窗口,将1.2内容复制到里面运行。
2025-07-30 17:14:23
798
原创 RDK X5 交叉编译OSS\QT\opencv\openssl
输出:/opt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/lib/libcrypto.a: current ar archive。-fPIC:启用位置无关代码(位置无关代码(PIC) 是共享库(.so)的必要条件。–host=aarch64-none-linux-gun:指定平台。–prefix="${SYSROOT}:安装的路径。–prefix="${SYSROOT}:安装的路径。
2025-05-07 10:17:07
1682
原创 QT高级(1)QTableView自定义委托集合,一个类实现若干委托
*一个类实现11种常用委托,使用灵活,可以直接将代码加入到自己的项目中,零耦合。***2. ***复选框控件:可以居中,可以在点击的时候发送信号,在外部轻松获得数据。***3. ***图标控件:可以指定某一种条件(、=灯),指定某一行为判断行,当某个行的值符合条件时,会先一种图标,不符合时显示另一种图标***4. ***密码框控件:可以显示明文和密码文,密码样式可以自己指定,同时当数值改变时,会发送信号***5. ***数值控件/日期时间控件/进度条控件:在前面4篇文章中已经有教程了***6
2025-05-07 10:13:30
3878
8
原创 ffmpeg(1)-图片相关知识
本文介绍了常见的图片格式及其特性,包括RGB、RGBA、CMYK、灰度、二值图像、YUV、索引颜色和高位深度格式,详细说明了它们的位数、应用场景和排列方式。此外,还解释了PSNR(峰值信噪比)的核心原理及其在图像质量评估中的应用。最后,提供了一个基于QT实现的图像处理工具,支持多种格式转换、分量分离、质量评价等功能,并支持文件拖拽显示。该工具可处理RGB/YUV等原始数据,需指定分辨率。
2025-03-28 17:18:41
1249
1
原创 cmake之旅(1)
CMake 是一个跨平台的构建系统生成器,它可以根据简单的配置文件(CMakeLists.txt)自动生成适用于多种构建系统的文件,比如 Unix 系统上的 Makefile,Windows 上的 Visual Studio 项目文件等。你可能会说,在vs(或者其他的IDE)中创建一个项目,创建一个main.cpp,把上面的代码复制进行,然后点击运行就好了呀。此时,重新运行上面的命令,你可以再文件夹下面看到一个main.i文件,可以打开mian.i,下拉到文件底部,里面生成了那些东西。
2024-09-03 08:59:32
1017
原创 使用ZLMediaKit搭建服务器实现推流拉流
使用setcap命令给ZLMediaKit可执行文件设置权限,允许它作为非root用户监听低端口号。遇到554端口没有权限使用。
2024-04-16 18:49:40
2701
原创 QT(19)-QCamera
QCamera::UnloadingStatus (3): 摄像头设备正在卸载,作为状态从 QCamera::LoadedState 或 QCamera::ActiveState 变更到 QCamera::UnloadedState 的结果。QCamera::LoadingStatus (2): 摄像头设备正在加载,作为状态从 QCamera::UnloadedState 变更到 QCamera::LoadedState 或 QCamera::ActiveState 的结果。在加载状态下,摄像头消耗电力。
2024-04-01 17:41:51
1667
原创 QT(19)-QNetworkRequest
获取指定的请求属性。获取用于 SSL 对等身份验证的主机名。设置用于 SSL 对等身份验证的主机名。检查是否存在指定名称的原始请求头。获取 HTTP/2 的配置信息。设置 HTTP/2 的配置信息。返回请求允许的最大重定向次数。获取指定名称的原始请求头的值。设置请求允许的最大重定向次数。获取所有原始请求头的列表。获取已知的请求头的值。设置已知的请求头的值。获取发起请求的对象。设置发起请求的对象。设置原始请求头的值。设置 SSL 配置。设置传输的超时时间。设置请求的 URL。获取 SSL 配置。
2024-03-21 14:50:31
1481
原创 Ubuntu20.04配置
Ubuntu20.04配置(一)换源(二)安装gcc、g++(三)安装vim(四)安装arm-linux-gcc-4.9(...)其他设置1.美化界面2.安装搜狗输入法(...)命令(...)知识(一)换源图形界面:设置->关于->软件更新->其他站点命令:参考这篇文章(二)安装gcc、g++sudo apt-get install build-essential(三)安装vimsudo apt-get install vim(四)安装arm-linux-gcc-4
2024-03-21 10:22:59
637
1
原创 QT常用事件
鼠标事件(QMouseEvent),如点击、移动、释放等。键盘事件(QKeyEvent),如按键按下和释放。窗口事件(QResizeEvent, QMoveEvent),当窗口大小或位置改变时。绘制事件(QPaintEvent),需要重新绘制部分或全部窗口时。定时器事件(QTimerEvent),定时器超时时。拖放事件(QDragEnterEvent, QDropEvent),进行拖放操作时。焦点事件(QFocusEvent),当部件获得或失去键盘焦点时。
2024-02-20 18:16:16
2259
原创 树莓派-Ubuntu22.04
服务文件通常位于/etc/systemd/system/目录下。这定义了一个新的服务,它在系统启动时执行您的脚本。Description字段是对服务的描述,ExecStart指定了脚本的完整路径。通过这种方式,您可以编写和配置任何类型的开机脚本,无论是进行系统初始化操作,还是启动特定的应用程序或服务。这将显示服务的当前状态和最近的日志输出。保存并关闭服务文件后,重新加载systemd以识别新服务,并启用此服务以在启动时运行。替换 /path/to/your/script.sh 为您的脚本实际路径。
2024-02-04 10:07:06
3391
原创 QCustomPlot(1)-QCustomPlot
为此,你可以创建一个 QCPSelectionRect 的子类,进行必要的自定义,然后使用此方法将其设置为 QCustomPlot 实例的选择矩形。一旦用户停止拖动,最后的重新绘制将使用正常的抗锯齿来恢复高质量的图像。这里的QCPAbstractPlottable是所有可绘制对象的基类,所以返回的列表可以包含各种类型的可绘制对象,如线、点或其他图形元素。例如,用户可能在交互式图中选择了某些线或点,然后你可以使用这个函数来获取这些已选择的元素,进而执行一些操作,如修改它们的属性、删除它们或执行其他任务。
2023-11-01 16:05:26
3175
原创 马赫数相关函数
其中,马赫数(Ma)定义为物体速度与周围流体中的声速之比。在流体动力学中,马赫数用于判断流动是否是亚音速、跨音速、超音速或高超音速。公式中的 �k 是比热比,它是气体的特定热容之比。它是一个常数,对于大多数理想气体,其值大约在1.3到1.4之间。这个值对于分析压缩性流非常重要。其他的函数,如 �,�(�),�(�),�(�),�(�),�(�)λ,q(λ),Y(λ),Z(λ),f(λ),R(λ) 提供了其他与马赫数和比热比相关的参数之间的关系
2023-10-20 23:20:04
940
原创 QCustomPlot(2)-QCPGraph
需要注意的是,QCustomPlot 也提供了全局的设置来控制所有图形元素是否使用抗锯齿渲染:QCustomPlot::setAntialiasedElements 和 QCustomPlot::setNotAntialiasedElements。如果您的图形元素需要在图例中有一个更特殊的表示(比如,除了默认的线型或颜色表示之外,您还想添加一些自定义文本或图形),那么您可以创建一个QCPPlottableLegendItem的子类,并手动添加到图例中,而不是调用此方法。
2023-10-07 15:12:45
3143
原创 Log4Qt日志框架(2)-深入分析和使用
4. DailyRollingFileAppender :以指定的滚动频率重名命名文件,例如,如果您的基本文件名是 application.log 并且您正在使用每天滚动,那么在 2023-08-18 的日志将被保存为 application.log.2023-08-18。所以,如果你设置了 INFO 级别,那么 TRACE 和 DEBUG 消息将被忽略,而 INFO, WARN, ERROR, 和 FATAL 消息会被处理。日志器具有一个日志级别,用于决定哪些日志消息应该被记录。定义日志消息的输出目标。
2023-09-13 10:46:01
550
原创 Log4Qt日志框架(1)- 引入到QT中
Log4Qt 是一个基于 Qt 的日志库,它是 Apache log4j 的一个移植版本。Log4Qt 旨在为 Qt 应用程序提供一个灵活和可配置的日志框架。组件化:Log4Qt 提供了各种组件,如日志器(Logger)、日志级别、布局(Layout)、Appender(追加器)等,使得其非常灵活和可扩展。多种日志级别:它支持多种日志级别,如 TRACE、DEBUG、INFO、WARN、ERROR 和 FATAL。多种输出目标:Log4Qt 可以配置输出到多种目的地,例如:文件、控制台、数据库等。
2023-08-20 12:37:07
1870
原创 QT中级(7)- 串口工具
另一方面,同步通信需要发送设备和接收设备在时间上同步,但可以以更高的速率发送数据。这些参数包括串口号,波特率(数据传输的速度),数据位(每个字节的位数),奇偶校验(一种错误检测方法),和停止位(标记字节结束的位数)。虽然串行通信在速度上可能不如并行通信快,但它可以在长距离上进行,而且硬件成本较低。3,半双工通信:数据可以在两个方向上流动,但不能同时进行。2,全双工通信:数据可以同时在两个方向上流动,且不会产生冲突。如果没有相应的硬件,在电脑上可以使用虚拟串口工具进行,将两个COM口进行连通信。
2023-07-18 13:13:00
1541
原创 QT+OpenCV配置
(在OpenCV源码路径G:\opencv_source_4.7.0\opencv\sources\3rdparty\ffmpeg下的ffmpeg.cmake文件可以看到该OpenCV版本需要的ffmpeg版本,一般在该文件的第一行)将鼠标放在该文件夹界面内,按住shift键,同时点击鼠标右键,点击在此处打开Powershell窗口(s),进入Windows Powershell,输入。点击configure,然后点击generate。出错了把之前的make clean掉。Compilers路径。
2023-04-29 15:48:40
3170
1
原创 QT搭建mqtt环境
MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,最初由IBM开发,现已成为OASIS标准。MQTT协议被广泛应用于物联网设备之间的通信和传输数据。MQTT协议具有以下特点:轻量级:MQTT协议设计为轻量级协议,适用于带宽较低、网络连接不稳定的设备之间的通信。
2023-03-13 16:50:09
5111
7
小波滤波和小波包程序.zip
2020-05-30
解决联想M7650,7600,M7450,7400驱动WIN10系统下不能用固件
2020-05-28
绝对官方 !绝对官方!可以直接打板!)正点原子 STM32F407 探索者原理图和PCB图
2020-06-01
Virtual Audio Cable 4.15(没有立体声的福音)
2020-05-30
摸鱼码字精灵.zip
2020-06-03
微信PC版 v2.9.5.15 正式版+无限多开&消息防撤回补丁(带撤回提示)(6.4更新)
2020-06-05
基于MATLAB与FFT算法的傅里叶级数可视化程序V2.0
2020-05-28
微软常用运行库合集 v2020.06.03(32&64位)
2020-06-03
微信小程序个人简历.zip
2020-05-30
JSP+JDBC+Servlet实现ATM机的源码
2020-05-30
unity通过WebAPI连接Websocket实现讯飞语音识别与合成
2020-06-03
ESET Nod32广告强效过滤规则
2020-05-30
Github开源便签管理程序 NotesMan v1.0.1
2020-06-05
fortigate飞塔防火墙手册内含官方cookbook及常用命令行
2020-06-03
log4qt日志库封装demo log4qtDemo-code
2023-09-13
显示yuv/rgb格式软件
2025-03-28
马赫数相关函数c语言代码+qt代码+应用程序
2023-10-20
基于QT的Log4Qt日志框架
2023-08-20
QT测试MQTT通信代码
2023-03-13
QT多线程文件读写工具源代码
2023-03-01
JAVA-JSP电子政务网毕业设计(包含源代码、部署教程)
2023-02-11
微信小程序-校园跑腿(包含完整源码,数据库,以及使用方法)
2023-02-10
QT中级(2)QTableView自定义委托(二)实现QProgressBar委托
2023-02-05
QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托
2023-02-04
CopybookBuilder-字帖生成器
2023-01-11
51单片机控制w5500实现tcp服务端通信
2022-09-23
51单片机控制w5500实现udp组播通信
2022-09-23
基于改进RBF的Q算法路径规划仿真MATLAB
2020-06-15
一加云服务照片批量下载导出 2.0 支持原图下载 Python爬虫
2020-06-05
凯博销货开单软件.zip
2020-06-15
w5500怎么配置udp组播?
2022-03-25
IWebBrowser2使用Navigate2打开的一个网页,网页里的js代码无效
2021-10-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅