- 博客(19)
- 收藏
- 关注
原创 GDAL 3.5.3 编译指南(MSVC2017 v141 · Release + Debug · 含 GDALLoadRPCFile 导出修复)
本文详细介绍了在Windows环境下使用MSVC2017 v141工具集编译GDAL 3.5.3的完整流程,重点修复了GDALLoadRPCFile等函数因缺少CPL_DLL导出标记导致的链接错误。通过vcpkg管理依赖(zlib、proj 9.8.1等),配置CMake并启用共享库编译,分别生成Release与Debug版本。安装后验证导出符号及函数调用成功,并提供在自定义VS项目中集成的方法,确保兼容性与可复现性。
2026-09-17 17:56:06
107
原创 QGraphicsView使用过程中崩溃-------Smooth Pixmap Transform:从旋转崩溃到有效防护
崩溃的本质:删掉平滑变换后,硬像素变换导致旋转后的边界坐标出现异常值,触发视图变换计算的内存越界;平滑变换的作用:不是“防崩溃”,而是通过插值计算隐式修正坐标误差,掩盖了代码中“未手动规整边界”的漏洞;根本解决:手动修正边界矩形的坐标(四舍五入+非负校验),即使关掉平滑变换,程序也能稳定运行。是“软防护”,删掉后需要加“硬防护”(手动修正坐标),才能避免旋转崩溃。
2026-01-22 17:31:55
663
原创 ‘QOpenGLTexture::setData‘: 被声明为已否决
摘要:Qt论坛指出QOpenGLTexture::setData方法的void参数版本已被弃用,改用const void参数版本。区别在于数据指针需要转换为const void类型。两种方法参数相同,包括mip级别、图层索引、立方体贴图面、数据格式和类型,但新版本要求数据指针为常量。转换示例展示了如何从vector数据指针转为const void来适配新接口。这一改动强化了类型安全,避免意外修改纹理数据。
2025-11-18 15:53:04
247
原创 OpenMP技术的学习与使用
OpenMP是一种支持共享内存并行编程的API,它通过编译器指令、库函数和环境变量简化了多线程程序的开发。核心功能包括:1) parallel指令创建并行区域;2) for指令实现循环并行化;3) schedule子句控制任务分配策略。OpenMP采用fork-join执行模型,主线程在进入并行区域时派生多个工作线程,结束后合并线程。它适用于科学计算、数据处理等场景,优点是易用性好、可移植性强,但仅支持共享内存系统且存在线程管理开销。使用时需注意循环迭代的合理分配和数据同步问题。典型应用包括数值模拟、机器学
2025-09-24 18:08:22
1294
原创 纯 C+++tinyxml2 实战:轻松生成 XML 文件(附 VS ANSI 环境适配方案)
用 tinyxml2 生成 XML 的核心是 “搭积木”—— 从文档到根节点,再到各级子节点,逐层构建。相比其他库,它的优势在于 “轻量化” 和 “低门槛”,特别适合中小型项目。本文的案例不仅覆盖了基础用法,还针对性解决了 VS ANSI 环境的中文乱码问题,代码可直接复用。如果后续需要解析 XML 文件,tinyxml2 也能胜任,只需调用XMLDocument::LoadFile()加载文件,再通过FirstChildElement()、NextSiblingElement()遍历节点即可。。
2025-09-24 16:16:00
770
原创 用 Qt 快速生成 XML 文件:从配置到实战(附完整代码)
Qt 提供了成熟的QDom:XML 文档的 “容器”,所有 XML 节点都挂载在它下面:XML 元素(如<book><title>),是构成 XML 的基本单元:用于添加 XML 声明(如QFile(文件写入)、(文本流处理)要使用这些类,必须先配置项目的.pro文件,这是 Qt XML 开发的第一步。首先定义Book(图书)和(图书馆)结构体,用来存储要写入 XML 的原始数据。这样做的好处是:数据和 XML 生成逻辑分离,后续修改数据格式更方便。// 1. 图书信息结构体(存储单本图书的所有属性)
2025-09-24 15:49:56
1232
原创 QMetaObject::invokeMethod 在 Qt 多线程编程中的应用
摘要 QMetaObject::invokeMethod是Qt框架中用于跨线程安全调用成员函数的核心方法。它通过Qt元对象系统实现线程间任务调度,确保函数在目标对象的关联线程中执行,避免直接跨线程调用导致的线程安全问题。该函数支持多种连接类型,包括异步队列调用(Qt::QueuedConnection)和同步阻塞调用(Qt::BlockingQueuedConnection),适用于子线程更新UI、主线程获取子线程计算结果等常见场景。使用时需注意目标对象的线程亲和性,并通过lambda表达式或Q_INVOK
2025-09-22 16:47:54
1898
原创 Qt里实现类似PS丝滑的可拖拽图片窗口(二):集成与扩展
本文通过ImageView与InertiaPixmapItem的深度集成,实现了 PS 风格的丝滑惯性拖拽,并拓展了缩放、旋转、亮度 / 对比度调整等核心功能。模块化架构:将主窗口、图片处理、惯性拖拽拆分为独立类,降低耦合,便于维护;线程安全处理:使用QtConcurrent::run和QMetaObject::invokeMethod,平衡处理效率与 UI 流畅度;性能优化:通过高效像素操作、异步加载、事件过滤,确保应用在处理大图片时仍保持流畅。
2025-09-22 16:34:13
1143
原创 MSVC编译器里使用UTF-8编码
在QT和VS中使用MSVC编译器处理含中文的UTF-8编码代码时,需在配置文件中添加特定指令。对于QT项目,在.pro文件中加入强制MSVC使用UTF-8编码的编译选项;而VS项目也需要类似设置以保证正确编译含中文的源代码。这些设置能解决因编码问题导致的编译报错。
2025-08-25 16:37:26
209
原创 Qt里实现类似PS丝滑的可拖拽图片窗口
本文介绍了Qt框架中QGraphicsPixmapItem的使用方法及其增强实现。QGraphicsPixmapItem是Qt图形视图框架中的核心图像显示组件,支持图像的加载、变换操作(平移/旋转/缩放)和交互功能(鼠标事件处理)。文章重点演示了如何通过继承QGraphicsPixmapItem实现自定义的InertiaPixmapItem类,该扩展类通过重写鼠标事件处理器(press/move/release)并集成QTimeLine动画时间线,实现了具有惯性滑动效果的图片拖拽功能。核心实现包括:1)实时
2025-08-06 16:08:02
1097
原创 在vs里使用qt / 重新安装qt / vs里无法打开ui文件 / 打开ui文件报错
摘要:本文介绍了将Qt程序迁移到VS并配置Qt插件的步骤。首先需重新安装Qt,因原版本缺少MSVC编译器和维护工具,需手动清理注册表项。然后在VS中配置Qt编译器,创建Qt项目。若UI文件报错,需在VS中正确关联Qt安装目录下的QtDesigner插件路径,确保界面编辑功能正常使用。全文提供了详细的Qt-VS环境配置和问题解决方法。
2025-07-24 13:49:11
675
原创 超快速qt连接mysql数据库(ODBC驱动)
4.输入数据库名称和密码,点击测试如果显示Successful表示连接成功,这里的数据库名就是前面创建数据库时你自己定的名称。5.在QT中验证,新建工程,输入以下代码,运行如果显示connect succeed!(上图中)找到要下载的,点击变绿的=>,点击Next。(我已经下载过了所以没有变绿)(如果没有就下载)第一步,下载连接工具 链接如下:https://(如果没有MYSQL ODBC....就下载)按下图顺序依次点击。3.选择Unicode Driver。(这样就下载完成了)
2025-05-15 22:00:25
933
原创 HTTP/1.1、HTTP/2、HTTP/3
队头阻塞依然存在,2只解决了HTTP层面的队头阻塞,但是TCP层面的依旧没有解决:HTTP/2 是基于 TCP 协议来传输数据的,TCP 是字节流协议,TCP 层必须保证收到的字节数据是完整且连续的,这样内核才会将缓冲区里的数据返回给 HTTP 应用,那么当「前 1 个字节数据」没有到达时,后收到的字节数据只能存放在内核缓冲区里,只有等到这 1 个字节数据到达时,HTTP/2 应用层才能从内核中拿到数据,这就是 HTTP/2 队头阻塞问题。大家都知道 UDP 是不可靠传输的,但基于 UDP 的。
2024-11-11 15:16:43
549
原创 【HTTPS的加密过程】
服务器和客户端有了这三个随机数(Client Random、Server Random、pre-master key),接着就用双方协商的加密算法,各自生成本次通信的「会话秘钥」服务器收到客户端的第三个随机数(pre-master key)之后,通过协商的加密算法,计算出本次通信的「会话秘钥」。客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。上面第一项的随机数是整个握手阶段的第三个随机数,会发给服务端,所以这个随机数客户端和服务端都是一样的。
2024-11-10 14:17:48
848
原创 三次握手、四次挥手及相关问题
问题1:最快发送数据时间:在三次握手的第三次发送时可以附带数据。因为第二次时客户端已经连接成功,可以发送消息了。问题2:为什么是三次?不是两次也不是四次?【TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。不使用「两次握手」和「四次握手」的原因:• 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
2024-11-09 10:14:51
470
原创 使用FFMPEG把图像从YUV格式转换为RGB格式
使用FFmpeg库将解码后的YUV格式的视频帧转换为RGB32格式的图像,分为五部分,分别是:创建转换上下文,获取RGB32图像的大小,分配内存空间,创建图像,进行转换。第一步:创建转换上下文,使用了函数sws_getcontext,用于创建一个SwsContext结构,这个结构包含了像素格式转换所需的所有信息。参数分别是视频帧的宽度和高度、输入视频帧的像素格式(YUV),输出的像素格式(RGB32),以及采用的算法(双三次插值算法)。
2024-11-08 13:18:02
1314
SPICE Toolkit (NASA) 最专业的天文动力学库 原网址:https://github.com/arturania/cspice?tab=readme-ov-file
2025-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅