QT之Creator学习
文章平均质量分 69
现阶段:巩固基础
世转神风-
先学
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
This application failed to start because no Qt platform plugin could be initialized
删掉release文件夹即可,重行生成就解决了。从git上拉取的代码,出现了该问题。原创 2026-01-13 19:12:32 · 196 阅读 · 0 评论 -
qt-字符串版本与数值版本互转
通过解析版本字符串结构(去除前缀、分割数字)和字节序列化逻辑(数字转单字节),可实现版本与二进制数据的双向转换。核心在于确保版本号数字在单字节范围内,并正确处理字符串与字节数组的转换细节。原创 2026-01-13 19:08:48 · 480 阅读 · 0 评论 -
qt-基础打印-不换行打印
在Qt中,qDebug()默认自动换行,可通过以下方法禁用换行: 使用QTextStream构建字符串缓冲区后统一输出 通过qSetMessagePattern全局修改消息格式 临时使用noquote()和nospace()控制单次输出 方法1适合复杂格式控制,方法2影响全局输出,方法3适用于临时调整。需注意频繁使用qDebug()会影响性能,调试完成后应移除相关代码。这些方法均跨平台兼容,可根据实际需求选择最合适的方案。原创 2025-12-31 18:01:15 · 395 阅读 · 0 评论 -
qt-通信协议基础-double转成QbyteArray-小端系统
摘要:本文介绍了在Qt C++中将双精度浮点数(double)转换为QByteArray的方法。提供了两种实现方案:基础版本直接使用memcpy进行内存复制,保留系统字节序;增强版本通过位移操作支持显式的大端/小端字节序转换。技术要点包括IEEE 754标准的内存布局处理、安全的类型转换设计以及跨平台兼容性考虑。文章还给出了反向转换验证代码、性能优化建议和典型应用场景,适用于需要精确处理浮点数二进制表示的网络通信、硬件接口等场景。原创 2025-12-30 18:25:10 · 680 阅读 · 0 评论 -
qt-通信协议基础-uint64_t转QByteArray-小端系统
本文介绍了在C++中将uint64_t转换为QByteArray的方法。通过使用memcpy直接复制内存内容,实现了与系统字节序无关的转换,保留原始数据的字节序(小端或大端)。转换默认生成8字节长度的QByteArray,与uint64_t大小一致,也可通过resize()调整长度。代码示例演示了如何转换0x123456789ABCDEF0值并输出十六进制和原始字节表示。原创 2025-12-28 22:25:47 · 376 阅读 · 2 评论 -
qt-uint64_t转QByteArray小端字节序并指定长度-小端系统
本文介绍了一种在C++中将uint64_t转换为小端字节序QByteArray的方法,支持指定长度和填充方式。通过位操作手动分解uint64_t为小端序字节,并根据目标长度进行填充或截断处理。填充可选择在开头或末尾添加指定字符,截断则保留前N个字节。测试案例展示了不同场景下的转换结果。该方法具有字节序无关性,适用于网络传输等场景,但需注意截断可能导致数据丢失的风险。核心代码提供了灵活的长度控制和填充选项,确保跨平台兼容性。原创 2025-12-28 22:18:23 · 452 阅读 · 0 评论 -
qt-union-联合体基础讲解
本文介绍了利用C++联合体(union)实现double与字节数组转换的技术。通过定义共享内存的DoubleConverter联合体,将double值转换为quint64类型进行位操作,解决了直接操作double类型的限制。重点解析了大小端处理的原理:大端序将高位字节存储在低地址,小端序则相反。代码示例展示了如何通过移位和掩码操作实现字节顺序控制。文章还讨论了该技术的优势,包括IEEE 754兼容性、平台适应性,并建议注意字节顺序约定和精度问题。原创 2025-12-27 22:04:16 · 381 阅读 · 0 评论 -
qt-通信协议基础-QStirng转QByteArray-进阶操作
文章探讨了代码编写中考虑字节序转换的重要性,指出随意编码会导致"屎山"问题。提供了一个C++函数示例,演示如何将double类型转换为QByteArray并支持可选字节序(大端/小端)。作者强调优秀代码应具备扩展性,并抛出思考题:如何改进使缓冲区大小能自动调整,而非固定8字节。文章旨在提醒开发者不应停留在初级阶段,而要考虑更完善的实现方案。原创 2025-12-27 18:03:41 · 299 阅读 · 0 评论 -
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 · 880 阅读 · 0 评论 -
qt-通信协议基础-固定长度-小端字节序补0x00指导
摘要:在Qt C++小端字节序中,数据不足时应在高位(右侧)补0x00。小端序将最低有效字节存储在低地址,补零需保持低位字节不变(如0x12补为4字节应为0x12 0x00 0x00 0x00)。推荐使用QDataStream设置小端序自动处理,避免手动操作错误。调试时可用qDebug()输出字节序验证结果。原创 2025-12-26 22:31:10 · 518 阅读 · 0 评论 -
qt-float转QByteArray-二进制存储-数据存储(IEEE 754标准)
本文介绍了在Qt C++中将float转换为IEEE 754标准4字节QByteArray的方法。通过memcpy直接拷贝内存实现高效转换,核心代码仅需5行。重点解析了内存操作原理、字节序处理(小端/大端转换)和数据验证技术,并提供了跨平台增强方案。文章还涵盖性能优化、内存安全注意事项及典型应用场景,如网络传输和硬件交互。示例代码可直接用于实际项目,完整展示了从基础实现到工业级应用的完整解决方案。原创 2025-12-25 21:26:15 · 1190 阅读 · 0 评论 -
qt-文件自动按编号命名
本文介绍了一种在Qt C++中实现文件递增编号创建的方案。通过扫描目标目录,使用正则表达式匹配已存在的编号文件,提取最大编号后加1生成新文件名。核心功能包括自动目录创建、文件名模式匹配(如data_file_1.txt)、编号递增逻辑和文件创建处理。方案支持自定义基础名、扩展名和存储路径,并考虑了目录不存在、无匹配文件等边界情况。同时提供了扩展优化建议,如前导零格式化、添加时间戳前缀以及多线程安全处理。该实现能有效避免文件覆盖,适用于需要持续生成不重复文件的场景。原创 2025-12-25 21:20:00 · 318 阅读 · 0 评论 -
qt-在字符串中指定位置插入字符串
Qt C++中的QString::insert()方法支持在指定位置前插入内容,position参数表示插入点左侧字符的索引。该方法可结合indexOf()定位子串位置,自动处理越界情况(负数插开头,超长插末尾)。支持链式调用,但对频繁操作建议先用QByteArray优化性能。相比prepend/append方法,insert()提供更精确的位置控制,能正确处理多字节字符。replace()则用于替换而非插入操作。该方法可高效实现字符串的精确插入需求。原创 2025-12-24 18:12:42 · 371 阅读 · 0 评论 -
QEventLoop与QTimer联动
当QTimer循环间隔(10ms)小于事件处理时间(50ms)时,会导致信号缺失而非堆积。由于单线程事件循环的阻塞特性,实际触发次数会大幅减少(1秒内从预期100次降至20次)。解决方案包括:优化业务逻辑缩短处理时间、使用线程池异步处理、调整定时器间隔或改用单次触发模式。核心在于避免事件循环被阻塞,确保定时信号能被及时处理。原创 2025-12-24 18:00:43 · 218 阅读 · 0 评论 -
QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
摘要:Qt中重复绑定UDP套接字时会出现状态冲突错误,主要因套接字已处于BoundState而bind()要求UnconnectedState。解决方案包括:1)绑定前关闭套接字释放资源;2)检查状态机合规操作;3)设置端口重用选项。关键改进点在于状态检查、资源管理和错误处理,需验证端口占用情况确保正常释放。建议添加调试输出并使用netstat命令观察端口状态。原创 2025-12-23 22:20:54 · 929 阅读 · 0 评论 -
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 · 772 阅读 · 0 评论 -
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 · 611 阅读 · 0 评论 -
QNetworkReply-QNetworkAccessManager-put-manager没有销毁,继续下一个put注意事项
摘要: 针对Qt中QNetworkAccessManager持续调用put()可能导致QNetworkReply内存泄漏的问题,提出系统性解决方案: 明确所有权:使用智能指针(QScopedPointer或unique_ptr)管理reply对象; 信号触发清理:连接finished()/errorOccurred()信号至deleteLater()实现自动释放; 异常处理:通过QPointer监控对象有效性,避免悬垂指针; 批量管理优化:采用中央协调器模式统一管理并发请求,绑定父对象生命周期。原创 2025-12-19 21:42:50 · 748 阅读 · 0 评论 -
QNetworkReply-QNetworkAccessManager-put-内存申请注意事项
摘要:在Qt C++中执行manager->put(request, ftpsendfile)时,内存管理涉及多个层面。QNetworkReply对象由Qt自动管理,默认以manager为父对象,可通过deleteLater()释放。文件数据缓冲由Qt内部处理,用户无需直接操作。用户分配的QFile对象需手动管理或使用智能指针。关键注意事项包括确保文件对象在上传期间有效、优先使用流式传输减少内存占用,以及通过信号槽机制确保资源释放。原创 2025-12-18 21:21:58 · 563 阅读 · 0 评论 -
qt-QDataStream-写入bin文件有多余字符
本文分析了Qt中QDataStream写入QByteArray时自动添加4字节长度前缀的问题。原因在于QDataStream作为二进制序列化流,默认会为动态数据添加长度标识(如示例中的"00 00 00 04")。若需要直接写入原始数据,建议改用QFile的write()方法;若必须使用QDataStream,可通过调整流格式参数优化,但无法完全消除长度前缀。关键区别在于QFile::write直接输出原始字节,而QDataStream会添加类型/长度元信息。原创 2025-12-18 21:05:30 · 260 阅读 · 0 评论 -
QFileInfoList-基础-问题盘点
在Qt中,这种内存分配是必要的,但需注意大目录可能导致的内存开销,可通过分批处理或按需加载优化性能。与QFileInfo类似的,比比皆是,如果不对其加以管制,将会导致整个系统资源竞争激烈,最终卡顿,或者崩溃。在任何一个对内存有严格要求的项目中,规避QFileInfo等类似的内存异常申请,才是项目扩展的良好基础。你了解过,当一个文件夹过于庞大时,它所带来的威胁?一次简单的访问文件夹,或许没有什么问题,但如果短时间内反复访问一个正在增大的文件夹,你是否考虑过会出现什么情况?原创 2025-12-17 19:38:06 · 959 阅读 · 0 评论 -
QFileInfoList-避免另类的内存泄漏
在Qt中处理大型目录时,QDir::entryList()与QFileInfo的按需加载模式是一种典型的内存优化策略,核心逻辑是延迟加载(Lazy Loading)和数据分块处理。原创 2025-12-17 19:36:44 · 1620 阅读 · 0 评论 -
qt-lambda信号槽机制
本文探讨了Qt C++中lambda槽函数的生命周期管理问题。实验表明,lambda槽函数作为独立对象存在,即使使用std::function存储也会在传递过程中生成新对象。文章详细分析了不同场景下的生命周期规则:无捕获lambda独立存在;有捕获lambda的生命周期取决于receiver对象;若捕获指针/引用需使用QPointer等智能管理。关键结论指出lambda生命周期主要与捕获变量和receiver相关,而非信号发送对象。最后强调使用lambda槽函数时应确保其一次性使用特性,避免内存泄漏风险。最原创 2025-12-16 19:24:07 · 1323 阅读 · 0 评论 -
qt-lambda函数无打印
【代码】qt-lambda函数无打印。原创 2025-12-16 18:48:15 · 161 阅读 · 0 评论 -
qt-windows用户点击.exe,报错:缺少libgcc_s_seh-1.dll
libgcc_s_seh-1.dll是GCC编译器(如MinGW-w64)的核心运行时库,用于处理异常处理和基本运算。若目标电脑未安装GCC或相关工具链(如MinGW),该文件会缺失。原创 2025-12-13 23:24:16 · 431 阅读 · 0 评论 -
QDialog-基础讲解
摘要:QDialog是Qt中对话框窗口的基类,支持模态/非模态显示,可设置返回值、默认按钮和尺寸调整手柄。对话框默认居中显示在父窗口上,但需设为模态才能确保始终置顶。文章通过个人信息记录对话框的代码示例(包含表单布局和保存按钮),演示了QDialog的实际应用。同时解答了对话框置顶时的界面交互问题,指出使用exec()方法可实现模态对话框,阻止用户操作其他窗口,并提供了相关技术文章的参考链接。原创 2025-12-13 00:10:32 · 1202 阅读 · 0 评论 -
qt-lambda-疑问
摘要: 本文探讨了Qt信号槽机制中lambda槽函数的内存管理问题。lambda本质是闭包对象,由编译器生成匿名类实例,其生命周期取决于使用场景:栈分配时随作用域销毁,堆分配时需手动管理。全局信号发送者多次绑定lambda会导致内存增长,因每次绑定都新建闭包对象。局部发送者因作用域限制易引发bug且无实用价值。通过匿名类结构分析,解释了值捕获/引用捕获的底层实现,并指出QTimer等场景下循环绑定lambda存在内存泄漏风险。案例代码演示了闭包对象的构造与调用过程,验证了理论分析。原创 2025-12-11 21:03:08 · 454 阅读 · 0 评论 -
qt-lambada-报错-in capture list does not name a variable
摘要:代码错误显示在lambda表达式中直接捕获成员变量timerCatch失败,因为成员变量需要通过this指针捕获。解决方法是在捕获列表中显式捕获this指针([this]),使lambda能访问类实例的成员变量。原创 2025-12-11 20:52:30 · 243 阅读 · 0 评论 -
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 · 1008 阅读 · 0 评论 -
qt-弹框提示-界面提醒
注意:前面都是基础讲解,如果有什么不懂的可以看看,但是如果只是追求实际运用场景,建议只看实际案例。原创 2025-12-10 23:04:39 · 1190 阅读 · 0 评论 -
Qt-判断字符串中是否存在异常\error……等报警字符
用于辨别多种异常字符是否包含原创 2025-12-10 22:33:29 · 374 阅读 · 0 评论 -
QEventLoop-qt阻塞异步操作
阻塞异步操作原创 2025-12-10 21:53:28 · 1060 阅读 · 0 评论 -
c++filt-GCC报错指令解析-系统异常打印-Qt终端异常打印
适合初学者要掌握的知识,它不是经常用到,但一定是异常分析的必备技能原创 2025-12-09 21:43:10 · 223 阅读 · 0 评论 -
winDbg专有名词解释
这里只提供部分解说,查你自己想要的,就行。原创 2025-12-09 21:21:01 · 1075 阅读 · 0 评论
分享