- 博客(74)
- 收藏
- 关注
原创 linux-嵌入式开发基础-网线直连-局域网传输文件-快速完成文件替换
指令输入后,通常是可以直接拷贝到开发板中。当然,也有特例,下面是初学者可能会遇到的问题!
2025-12-31 18:11:55
295
原创 qt-基础打印-不换行打印
在Qt中,qDebug()默认自动换行,可通过以下方法禁用换行: 使用QTextStream构建字符串缓冲区后统一输出 通过qSetMessagePattern全局修改消息格式 临时使用noquote()和nospace()控制单次输出 方法1适合复杂格式控制,方法2影响全局输出,方法3适用于临时调整。需注意频繁使用qDebug()会影响性能,调试完成后应移除相关代码。这些方法均跨平台兼容,可根据实际需求选择最合适的方案。
2025-12-31 18:01:15
289
原创 VS code 打开bin文件的插件
VS Code可通过Hex Editor插件编辑.bin文件,支持十六进制和ASCII格式显示及修改。安装方式包括在线市场搜索安装或离线下载.vsix包执行命令行安装。使用时右键选择Hex Editor打开文件,直接修改字节数据并保存。替代方案包括Binary Viewer插件或命令行工具转换编辑。注意事项:编辑前备份文件,大文件可能卡顿,需确保插件版本兼容。该方案为开发者提供了轻量级二进制文件编辑方案。
2025-12-30 23:04:00
365
原创 qt-通信协议基础-double转成QbyteArray-小端系统
摘要:本文介绍了在Qt C++中将双精度浮点数(double)转换为QByteArray的方法。提供了两种实现方案:基础版本直接使用memcpy进行内存复制,保留系统字节序;增强版本通过位移操作支持显式的大端/小端字节序转换。技术要点包括IEEE 754标准的内存布局处理、安全的类型转换设计以及跨平台兼容性考虑。文章还给出了反向转换验证代码、性能优化建议和典型应用场景,适用于需要精确处理浮点数二进制表示的网络通信、硬件接口等场景。
2025-12-30 18:25:10
627
原创 qt-通信协议基础-uint64_t转QByteArray-小端系统
本文介绍了在C++中将uint64_t转换为QByteArray的方法。通过使用memcpy直接复制内存内容,实现了与系统字节序无关的转换,保留原始数据的字节序(小端或大端)。转换默认生成8字节长度的QByteArray,与uint64_t大小一致,也可通过resize()调整长度。代码示例演示了如何转换0x123456789ABCDEF0值并输出十六进制和原始字节表示。
2025-12-28 22:25:47
300
2
原创 qt-uint64_t转QByteArray小端字节序并指定长度-小端系统
本文介绍了一种在C++中将uint64_t转换为小端字节序QByteArray的方法,支持指定长度和填充方式。通过位操作手动分解uint64_t为小端序字节,并根据目标长度进行填充或截断处理。填充可选择在开头或末尾添加指定字符,截断则保留前N个字节。测试案例展示了不同场景下的转换结果。该方法具有字节序无关性,适用于网络传输等场景,但需注意截断可能导致数据丢失的风险。核心代码提供了灵活的长度控制和填充选项,确保跨平台兼容性。
2025-12-28 22:18:23
368
原创 qt-union-联合体基础讲解
本文介绍了利用C++联合体(union)实现double与字节数组转换的技术。通过定义共享内存的DoubleConverter联合体,将double值转换为quint64类型进行位操作,解决了直接操作double类型的限制。重点解析了大小端处理的原理:大端序将高位字节存储在低地址,小端序则相反。代码示例展示了如何通过移位和掩码操作实现字节顺序控制。文章还讨论了该技术的优势,包括IEEE 754兼容性、平台适应性,并建议注意字节顺序约定和精度问题。
2025-12-27 22:04:16
275
原创 qt-通信协议基础-QStirng转QByteArray-进阶操作
文章探讨了代码编写中考虑字节序转换的重要性,指出随意编码会导致"屎山"问题。提供了一个C++函数示例,演示如何将double类型转换为QByteArray并支持可选字节序(大端/小端)。作者强调优秀代码应具备扩展性,并抛出思考题:如何改进使缓冲区大小能自动调整,而非固定8字节。文章旨在提醒开发者不应停留在初级阶段,而要考虑更完善的实现方案。
2025-12-27 18:03:41
227
原创 qt-通信协议基础-QStirng转QByteArray-与字节序互动
QString 转 QByteArray 的字节序取决于编码方式: UTF-8/Latin1等单字节编码无字节序问题 UTF-16编码时: 默认使用系统字节序(无BOM) 可通过toUtf16(true)添加BOM标识字节序 也可手动处理或使用QDataStream强制指定大小端 系统字节序可通过QSysInfo::ByteOrder查询 关键点:只有多字节编码(如UTF-16)才需考虑字节序,单字节编码无此问题。
2025-12-26 22:41:20
780
原创 qt-通信协议基础-固定长度-小端字节序补0x00指导
摘要:在Qt C++小端字节序中,数据不足时应在高位(右侧)补0x00。小端序将最低有效字节存储在低地址,补零需保持低位字节不变(如0x12补为4字节应为0x12 0x00 0x00 0x00)。推荐使用QDataStream设置小端序自动处理,避免手动操作错误。调试时可用qDebug()输出字节序验证结果。
2025-12-26 22:31:10
414
原创 qt-float转QByteArray-二进制存储-数据存储(IEEE 754标准)
本文介绍了在Qt C++中将float转换为IEEE 754标准4字节QByteArray的方法。通过memcpy直接拷贝内存实现高效转换,核心代码仅需5行。重点解析了内存操作原理、字节序处理(小端/大端转换)和数据验证技术,并提供了跨平台增强方案。文章还涵盖性能优化、内存安全注意事项及典型应用场景,如网络传输和硬件交互。示例代码可直接用于实际项目,完整展示了从基础实现到工业级应用的完整解决方案。
2025-12-25 21:26:15
1082
原创 qt-文件自动按编号命名
本文介绍了一种在Qt C++中实现文件递增编号创建的方案。通过扫描目标目录,使用正则表达式匹配已存在的编号文件,提取最大编号后加1生成新文件名。核心功能包括自动目录创建、文件名模式匹配(如data_file_1.txt)、编号递增逻辑和文件创建处理。方案支持自定义基础名、扩展名和存储路径,并考虑了目录不存在、无匹配文件等边界情况。同时提供了扩展优化建议,如前导零格式化、添加时间戳前缀以及多线程安全处理。该实现能有效避免文件覆盖,适用于需要持续生成不重复文件的场景。
2025-12-25 21:20:00
262
原创 qt-在字符串中指定位置插入字符串
Qt C++中的QString::insert()方法支持在指定位置前插入内容,position参数表示插入点左侧字符的索引。该方法可结合indexOf()定位子串位置,自动处理越界情况(负数插开头,超长插末尾)。支持链式调用,但对频繁操作建议先用QByteArray优化性能。相比prepend/append方法,insert()提供更精确的位置控制,能正确处理多字节字符。replace()则用于替换而非插入操作。该方法可高效实现字符串的精确插入需求。
2025-12-24 18:12:42
310
原创 QEventLoop与QTimer联动
当QTimer循环间隔(10ms)小于事件处理时间(50ms)时,会导致信号缺失而非堆积。由于单线程事件循环的阻塞特性,实际触发次数会大幅减少(1秒内从预期100次降至20次)。解决方案包括:优化业务逻辑缩短处理时间、使用线程池异步处理、调整定时器间隔或改用单次触发模式。核心在于避免事件循环被阻塞,确保定时信号能被及时处理。
2025-12-24 18:00:43
163
原创 QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
摘要:Qt中重复绑定UDP套接字时会出现状态冲突错误,主要因套接字已处于BoundState而bind()要求UnconnectedState。解决方案包括:1)绑定前关闭套接字释放资源;2)检查状态机合规操作;3)设置端口重用选项。关键改进点在于状态检查、资源管理和错误处理,需验证端口占用情况确保正常释放。建议添加调试输出并使用netstat命令观察端口状态。
2025-12-23 22:20:54
791
原创 Ubuntu 24.04-国内镜像源替换
本文介绍如何将Ubuntu 24.04的软件源替换为阿里云镜像。首先备份原始配置,然后修改主仓库和安全源的URIs为阿里云地址。验证配置后执行apt update确认更新源是否生效。文中还提供了清华大学、中科大等国内镜像选项,并强调Ubuntu 24.04必须使用DEB822格式配置文件。注意事项包括保持密钥路径不变、网络超时处理等。替换后可提升下载速度,备份文件可用于恢复原始配置。
2025-12-23 18:08:09
926
原创 qt-kits-警告:No C++ compiler,无法正常解析工程项目.pro文件
摘要:在Ubuntu 24.04系统中使用Qt 5.12.9时遇到项目无法打开的问题,通过终端安装gcc/g++和lsb-core等依赖包后仍报错。尝试修改软件源为清华/阿里云镜像未解决问题,最终安装lsb-release后成功打开.pro文件。文章还关联了关于Qt编译报错与lsb-core影响的扩展内容。
2025-12-22 20:03:17
722
原创 qt-初步编译运行报错-When executing step “Make“-无法启动进程“make“
本文主要解决Qt编译过程中出现的"无法启动make进程"问题。原因可能是缺少make编译器或依赖库(如lsb-core)。解决方案包括:1)安装编译依赖项(build-essential等);2)验证Qt构建套件配置路径;3)检查项目.pro文件配置;4)优化软件源为国内镜像加速下载。最终通过qmake重新生成Makefile解决问题。高版本依赖通常兼容低版本,无需强制安装LSB模块。
2025-12-22 20:01:30
493
原创 linux使用终端打开当前文件夹界面
在Linux终端中,可通过多种方式快速打开当前文件夹的图形界面:推荐使用通用命令xdg-open .,它会调用系统默认文件管理器;也可直接指定文件管理器如nautilus .(GNOME)、dolphin .(KDE)或thunar .(Xfce)。部分终端支持右键菜单直接打开,或通过拖拽文件夹到终端获取路径。常见问题包括命令未找到(需安装对应软件包)和权限问题(谨慎使用sudo)。对于远程服务器,需配置X11转发。xdg-open .是最推荐的跨平台解决方案。
2025-12-21 22:13:56
551
原创 VMware-挂载报错:no mountpoint specified
摘要:解决VMware共享文件夹挂载报错"error: no mountpoint specified"的方法。主要原因是路径格式错误,应将源路径(.host:/)和挂载点(/mnt/hgfs)分开指定。解决方案包括:1)修正命令格式;2)确保挂载点目录存在且有权限;3)检查VMware共享设置;4)验证VMware Tools状态。还需注意权限匹配、路径冲突等问题。
2025-12-21 22:05:19
303
原创 通过本地CMD关闭远程软件
摘要: 本文介绍了三种在Windows CMD中远程终止进程的方法。1) 使用taskkill命令,支持远程连接、进程筛选和强制终止;2) 使用简化的tskill命令,通过PID或进程名终止;3) 使用调试工具ntsd终止指定PID进程。演示案例展示了通过IP、用户名密码远程终止进程的操作。这些方法可提升系统管理效率,但需注意权限和安全性。
2025-12-20 22:04:03
427
原创 winDbg安装-以及安装路径
Microsoft Store安装的软件默认存储在系统隐藏文件夹中,主程序位于C:\Program Files\WindowsApps\,用户数据在C:\Users[用户名]\AppData\Local\Packages\。查找方式包括:通过开始菜单定位、设置中的"应用"列表查看,或直接在文件资源管理器中搜索。注意这些文件夹默认隐藏且需要管理员权限访问。如需修改安装路径,可在系统存储设置中调整,但仅影响后续安装的应用。
2025-12-19 21:57:49
331
原创 QNetworkReply-QNetworkAccessManager-put-manager没有销毁,继续下一个put注意事项
摘要: 针对Qt中QNetworkAccessManager持续调用put()可能导致QNetworkReply内存泄漏的问题,提出系统性解决方案: 明确所有权:使用智能指针(QScopedPointer或unique_ptr)管理reply对象; 信号触发清理:连接finished()/errorOccurred()信号至deleteLater()实现自动释放; 异常处理:通过QPointer监控对象有效性,避免悬垂指针; 批量管理优化:采用中央协调器模式统一管理并发请求,绑定父对象生命周期。
2025-12-19 21:42:50
693
原创 QNetworkReply-QNetworkAccessManager-put-内存申请注意事项
摘要:在Qt C++中执行manager->put(request, ftpsendfile)时,内存管理涉及多个层面。QNetworkReply对象由Qt自动管理,默认以manager为父对象,可通过deleteLater()释放。文件数据缓冲由Qt内部处理,用户无需直接操作。用户分配的QFile对象需手动管理或使用智能指针。关键注意事项包括确保文件对象在上传期间有效、优先使用流式传输减少内存占用,以及通过信号槽机制确保资源释放。
2025-12-18 21:21:58
512
原创 qt-QDataStream-写入bin文件有多余字符
本文分析了Qt中QDataStream写入QByteArray时自动添加4字节长度前缀的问题。原因在于QDataStream作为二进制序列化流,默认会为动态数据添加长度标识(如示例中的"00 00 00 04")。若需要直接写入原始数据,建议改用QFile的write()方法;若必须使用QDataStream,可通过调整流格式参数优化,但无法完全消除长度前缀。关键区别在于QFile::write直接输出原始字节,而QDataStream会添加类型/长度元信息。
2025-12-18 21:05:30
223
原创 QFileInfoList-基础-问题盘点
在Qt中,这种内存分配是必要的,但需注意大目录可能导致的内存开销,可通过分批处理或按需加载优化性能。与QFileInfo类似的,比比皆是,如果不对其加以管制,将会导致整个系统资源竞争激烈,最终卡顿,或者崩溃。在任何一个对内存有严格要求的项目中,规避QFileInfo等类似的内存异常申请,才是项目扩展的良好基础。你了解过,当一个文件夹过于庞大时,它所带来的威胁?一次简单的访问文件夹,或许没有什么问题,但如果短时间内反复访问一个正在增大的文件夹,你是否考虑过会出现什么情况?
2025-12-17 19:38:06
895
原创 QFileInfoList-避免另类的内存泄漏
在Qt中处理大型目录时,QDir::entryList()与QFileInfo的按需加载模式是一种典型的内存优化策略,核心逻辑是延迟加载(Lazy Loading)和数据分块处理。
2025-12-17 19:36:44
1552
原创 qt-lambda信号槽机制
本文探讨了Qt C++中lambda槽函数的生命周期管理问题。实验表明,lambda槽函数作为独立对象存在,即使使用std::function存储也会在传递过程中生成新对象。文章详细分析了不同场景下的生命周期规则:无捕获lambda独立存在;有捕获lambda的生命周期取决于receiver对象;若捕获指针/引用需使用QPointer等智能管理。关键结论指出lambda生命周期主要与捕获变量和receiver相关,而非信号发送对象。最后强调使用lambda槽函数时应确保其一次性使用特性,避免内存泄漏风险。最
2025-12-16 19:24:07
1262
原创 windows-ps1脚本-获取网线直连下文件路径中的文件名
摘要:该脚本用于自动化处理远程计算机文件夹访问操作。主要功能包括关闭指定程序(closeExe),为后续文件操作(如删除、添加、拷贝等)做准备。脚本通过计算机名($ComputerName)参数识别目标机器,实现跨设备文件夹访问,适用于批量自动化处理场景。执行时会显示处理状态("代码执行1!"),为文件管理操作提供前置条件。
2025-12-15 21:38:41
182
原创 ps1脚本-运行报错-并带有乱码
总结,本电脑中windows powershell在解码过程中使用的是GBK格式,因此当运行其它编码的脚本时,导致一些字符转移错误,因此才导致了报错。不要去尝试去修改脚本中的代码,甚至首先怀疑代码报错,首先要做的,是确保脚本运行无乱码,才是最最重要的!再次运行,本次案例,就不再报错。
2025-12-15 21:29:08
500
原创 windows-ps1-脚本-删除文件
该脚本用于批量删除指定网络共享路径(UNC路径)下的所有文件,并返回操作结果。锁定文件:需配合Unlocker工具先解锁。使用-Force参数会跳过系统文件保护。隐藏文件:包含-File参数时自动包含。只读文件:自动移除只读属性后删除。不可恢复操作,建议先备份。
2025-12-14 22:58:56
390
原创 烤鸡-跑分测评-图吧工具-渲染办公参考
本文提供了电脑性能测试的几个关键指标:1)"一键烤鸡"测试用于评估3D游戏和渲染性能,检测卡顿和温度表现;2)磁盘读写速度测试对处理大型渲染文件至关重要;3)色域测试决定了色彩丰富度,数值越大效果越好;4)屏幕坏点与漏光测试影响视觉体验,即使高色域配置也可能因漏光而降低效果。这些测试参数共同构成了评估电脑硬件性能的重要标准。
2025-12-14 12:28:25
314
原创 qt-windows用户点击.exe,报错:缺少libgcc_s_seh-1.dll
libgcc_s_seh-1.dll是GCC编译器(如MinGW-w64)的核心运行时库,用于处理异常处理和基本运算。若目标电脑未安装GCC或相关工具链(如MinGW),该文件会缺失。
2025-12-13 23:24:16
197
原创 QDialog-基础讲解
摘要:QDialog是Qt中对话框窗口的基类,支持模态/非模态显示,可设置返回值、默认按钮和尺寸调整手柄。对话框默认居中显示在父窗口上,但需设为模态才能确保始终置顶。文章通过个人信息记录对话框的代码示例(包含表单布局和保存按钮),演示了QDialog的实际应用。同时解答了对话框置顶时的界面交互问题,指出使用exec()方法可实现模态对话框,阻止用户操作其他窗口,并提供了相关技术文章的参考链接。
2025-12-13 00:10:32
1148
原创 qt-lambda-疑问
摘要: 本文探讨了Qt信号槽机制中lambda槽函数的内存管理问题。lambda本质是闭包对象,由编译器生成匿名类实例,其生命周期取决于使用场景:栈分配时随作用域销毁,堆分配时需手动管理。全局信号发送者多次绑定lambda会导致内存增长,因每次绑定都新建闭包对象。局部发送者因作用域限制易引发bug且无实用价值。通过匿名类结构分析,解释了值捕获/引用捕获的底层实现,并指出QTimer等场景下循环绑定lambda存在内存泄漏风险。案例代码演示了闭包对象的构造与调用过程,验证了理论分析。
2025-12-11 21:03:08
410
原创 qt-lambada-报错-in capture list does not name a variable
摘要:代码错误显示在lambda表达式中直接捕获成员变量timerCatch失败,因为成员变量需要通过this指针捕获。解决方法是在捕获列表中显式捕获this指针([this]),使lambda能访问类实例的成员变量。
2025-12-11 20:52:30
203
原创 qt-pro文件名词解释
greaterThan(QT_MAJOR_VERSION, 4):这是一个Qt构建系统(qmake)的条件判断函数,用于检查宏变量QT_MAJOR_VERSION的值是否大于4,QT_MAJOR_VERSION 是Qt内置的宏变量,表示当前Qt的主版本号(如Qt 5.x.x对应值为5,Qt 6.x.x对应值为6)。这是一个用于 Qt 项目的 .pro 文件中的一行代码,用于指定项目类型为插件项目。在 Qt 中,可以创建多种类型的项目,包括应用程序项目、库项目和插件项目。
2025-12-11 20:48:49
933
【windows无需安装】轻量级信息记录软件 - 独立运行无需额外依赖
2025-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅