登录社区云,与社区用户共同成长
邀请您加入社区
本文介绍了三种为HarmonyOS/OpenHarmony构建第三方库的解决方案: vcpkg:微软维护的C/C++包管理器,支持跨平台(Windows/Linux/macOS)和交叉编译,已由Qt团队添加HarmonyOS支持,适用于手机/平板/PC设备,包含2300+开源库。 HarmonyBrew:基于Homebrew的包管理器,仅支持arm64架构,适用于HarmonyOS PC设备或Do
Qt事件与信号槽机制及常见事件处理 摘要:本文介绍了Qt框架中的事件处理机制及其与信号槽的关系。Qt事件是操作系统的底层机制,Qt将其封装并通过重写事件处理函数实现交互。文章详细讲解了鼠标进入/离开事件(enterEvent/leaveEvent)的实现方法,包括创建子类继承标准控件并重写事件函数,以及通过提升控件或代码创建两种方式触发事件。此外还介绍了鼠标按下、释放、双击和移动等常见鼠标事件的处
insertAlarm("AI调控","粮食偏湿,自动减速烘干"+QString::number(m_outSpeed,'f',1)+"t/h");QStringList recHeader = {"序号","时间","粮食品种","温度","湿度","含水率","AI等级","出料速度"};layParam->addWidget(new QLabel("默认出料速度(t/h)"),row,0);
摘要:本文介绍如何搭建x86到ARM64的跨平台交叉编译环境,解决国产操作系统(如UOS/麒麟)上的开发痛点。核心步骤包括:1) 安装aarch64交叉编译器;2) 通过Docker获取目标机Sysroot(含头文件和库);3) 编写CMake工具链文件约束编译路径;4) 处理GNU符号版本冲突的底层技巧(如桩函数代理)。最终实现在高性能x86主机上编译出可直接在ARM64目标机运行的Qt/C++
在编译期注入这些能力,而不是依赖复杂的模板元编程或运行时开销较大的方案。这使得 Qt 能够在保持 C++ 性能的同时提供高级的动态特性。的核心工具之一,负责处理 Qt 的元对象系统(Meta-Object System)。Meta-Object Compiler(元对象编译器,简称。C++ 原生不支持反射和信号槽机制。宏的类定义),然后生成额外的 C++ 代码(,它读取 C++ 头文件(通常是包含
本文基于 C++/Qt 使用 QTcpSocket 手动实现 MQTT 客户端,从 Broker、Topic、发布/订阅等核心概念出发,讲解 MQTT 测试工具的连接、订阅、发布、接收消息与日志记录流程。
Qt内存泄漏解决方案摘要 常见泄漏原因:未指定父对象的QObject堆对象、循环引用、第三方库未释放。推荐使用Valgrind工具(Linux/macOS)检测,关注"definitely lost"关键结果。Qt提供智能指针管理内存:QPointer防野指针,QSharedPointer自动释放。最佳实践包括:控件设置parent、独立对象用智能指针、窗口开启WA_Delet
本文介绍了如何在PHP中使用SFTP协议安全地管理远程服务器文件。通过phpseclib库实现SFTP连接,详细展示了密钥认证、目录操作和文件传输的完整代码示例。文章重点讲解了使用私钥进行身份验证的方法,包括连接建立、目录切换、文件上传下载等核心功能,并强调了权限设置和错误处理等安全注意事项。该方案特别适合需要自动化处理远程文件的Web应用开发场景,可与Laravel等框架无缝集成。
博主把自己觉得最关键的部分贴了出来,如有疑问,可以留言,博主会仔细看自己的配置,争取把细节都展现出来。
本文介绍了C++中类的核心概念与访问权限控制。主要内容包括:1. 类的基本结构,包含数据成员、成员函数、构造函数/析构函数和访问修饰符;2. 通过汽车类案例对比C结构体与C++类的实现差异;3. 成员函数的正确定义方式及作用域解析运算符的使用;4. 类组合的应用实例;5. 访问权限(public/private/protected)的作用及必要性,通过银行账户案例展示private成员的保护机制。
本文系统介绍了四种经典边缘检测算法。Sobel和Scharr算子基于一阶梯度,分别通过3×3卷积核计算水平和垂直方向边缘,其中Scharr精度更高。Laplacian算子利用二阶导数实现方向无关的边缘检测,但对噪声敏感。Canny算法通过高斯滤波、梯度计算、非极大值抑制和双阈值处理等步骤,综合性能最优。实验对比表明:Canny边缘连续性最好但计算复杂,Sobel/Scharr适合实时应用,Lapl
在这次课程设计中,我主要完成了两款软件。一款能够模拟哈希表的建立、删除、新增、查找操作。一款能够模拟线性表转为树形结构的操作。在实践过程中,我复习了哈希表的各种哈希函数的选取和冲突的解决方法;哈希表的建立、查找、插入和删除操作。我通过查阅资料,分析选取了较好的线性表转树形结构的数据结构和方法。还有就是自学了 QT,了解掌握了 QT 的基本信号与槽的原理,以及部分关键控件如 QTreeWidget、
本文主要探讨了C++中引用和运算符重载的核心概念与应用。引用作为变量的别名,必须初始化且不可更改指向,与指针相比更安全但灵活性较低。文章通过代码示例展示了引用的声明、作为函数参数和返回值的用法。在运算符重载部分,重点介绍了函数重载和运算符重载的实现方式,包括==和+等运算符的重载方法,强调重载时应保持语义一致性并避免过度使用。这些特性使C++能够以更直观的方式操作自定义类型,提升代码可读性,但也需
本文系统介绍了C++构造函数与拷贝控制的核心概念。主要内容包括:1. 构造函数的基础用法(无参构造、带参构造)及其初始化方式;2. 拷贝构造函数的应用场景(对象复制、传参、返回值)与实现要点;3. 深浅拷贝的区别与实现,重点分析了指针成员的处理方式;4. 规则三则原则及其在资源管理中的应用;5. 初始化列表的语法优势与使用场景;6. this指针的用法及其在链式调用中的作用;7. new/dele
所做的工作本次课程设计中,我完成了这两个软件完整的开发。这其中包括了对软件的需求分析,软件的系统架构建立、界面 UI 设计、实际代码编写四个过程。在完成软件开发之后,对于本次的课程设计内容进行了总结并形成了设计说明书(即本报告)。课程设计中,我通过查阅大量网上的资料与聆听老师的授课,学习了 Qt、MFC 这两个绘制 UI 的工具的使用,最终选择采用 Qt 这个目前使用更加广泛的工具完成此次的作业。
UDP通信时轻量的、不可靠的、面向数据报、无连接的协议,用于对可靠性要求不高的场合。与TCP通信不同,两个程序之间进行UDP通信无需预先建立持久的socket连接,UDP每次发送数据报都需要指定目标地址和端口。UDP消息传输有单播、广播和组播三种模式。
本文介绍了图像处理中的轮廓检测与分析方法。首先阐述了图像细化(骨架化)的原理和ZS细化算法流程,通过迭代删除边界像素点来获取单像素宽度的骨架。其次详细讲解了轮廓检测的概念、与边缘的区别,以及findContours()和drawContours()函数的使用方法。接着介绍了轮廓信息统计技术,包括计算轮廓面积和周长。最后探讨了三种轮廓外接多边形方法:最大外接矩形、最小外接矩形和多边形逼近,并给出了相
QT是一个跨平台的C++开发库,主要用于开发图形界面程序。简而言之,就是用来做UI界面的。下边笔者将介绍QT的基础用法,包括信号与槽机制、常用控件以及多线程。建议大家在学习QT时,先掌握QT的用法即可,不用深究原理。信号(signal)指的是在特定情况下被发射的事件。比如说你在QT窗口里创建了一个按钮,点击这个按钮就会发送一个信号,然后界面窗口会对你所发送的信号进行响应。槽(slot)就是对信号响
首次在VSCode中打开Qt项目时,可能会遇到头文件报错的现象。本文旨在说明解决该报错的方法
编译器默认拷贝构造/默认赋值,只按字节逐成员赋值。类中有裸指针时:只拷贝指针地址,不新开堆内存。手动自定义拷贝构造、重载赋值运算符:深拷贝内存修改 p1.pName 影响浅拷贝:改 p1 会连带改 p2深拷贝:改 p1 完全不影响 p22. new 底层做了什么底层三件事:new 出来的堆对象不会自动析构,必须手动 delete。类包含裸指针、构造里手动 、析构要👉 必须自定义:拷贝构造 + 赋
本文介绍了二维码检测和积分图像两个计算机视觉技术。在二维码检测部分,详细说明了QR码的结构组成(定位图案、对齐图案等)及其识别原理,并给出了OpenCV中二维码检测、解码的函数接口及示例代码。积分图像部分阐述了其计算原理(通过预先统计像素累加和快速计算任意矩形区域像素和),介绍了OpenCV的integral()函数及其参数说明,同时提供了创建测试图像并计算标准求和、平方求和及倾斜求和积分图像的完
本文记录了QML+C++的学习过程,参考了哔哩哔哩的QML教程视频。学习笔记使用Obsidian软件管理,只需将解压后的文件用Obsidian打开即可查看。内容简洁实用,便于学习者快速掌握相关知识。
本文介绍了三种角点检测方法:1)Harris角点检测通过计算矩形区域移动前后的像素差值来识别角点,使用cornerHarris函数实现;2)Shi-Tomasi角点检测改进Harris算法,采用goodFeaturesToTrack函数自动筛选稳定特征点;3)亚像素级优化通过cornerSubPix函数将角点坐标精确到小数级别。文中提供了各方法的OpenCV实现代码示例,包括图像预处理、角点检测和
QT鸿蒙环境搭建,使用最新的在线安装器
围绕桌面客户端常见的后台任务场景,讲解线程池封装、任务取消、进度上报、结果回调和主线程 UI 更新的完整设计。
本文提出了一种基于QT框架的C++数据类序列化解决方案。通过宏定义和QT属性系统,实现了类似Java Lombok的自动化功能,包括:1) 使用SERIALIZE宏自动生成拷贝构造函数;2) JSONFIELD宏自动生成getter/setter方法;3) 支持数据流输入输出和QDebug输出;4) 继承Serializable基类即可获得序列化能力。该方案采用轻量级Q_GADGET替代QObje
本文摘要: 针对当前手机听音存在内存占用多、便携性差、在线播放需会员等问题,本研究设计了一款基于STM32F103C8T6单片机的小型音乐播放器。系统以STM32最小系统为核心,集成MP3模块、SD卡存储、独立按键、七彩LED灯及蓝牙模块,实现本地音乐播放、双控操作和音乐灯光联动功能。硬件层面完成各模块电路连接,配置GPIO口、USART串口及TIM定时器;软件层面移植FatFs文件系统,开发MP
C++工程中真正的内存泄漏问题往往不是简单的忘记delete,而是生命周期管理失控。常见问题包括:1) shared_ptr滥用导致对象无法释放;2) 循环引用造成隐性泄漏;3) 回调注册未解除长期持有对象;4) 异步任务不当延长对象生命周期;5) 线程未退出导致资源无法释放。这些问题本质上是对象所有权和生命周期设计不清晰导致的,比传统内存泄漏更难检测和修复。解决关键在于合理使用智能指针(优先un
但在简单的使用场景下,输出一条普通信息的耗时也在微秒级别。不过和 QDebug 一样,如果在性能敏感的区域(如频繁调用的函数内部或者紧密的循环中)大量使用,并且日志输出的内容过多或者日志系统配置复杂,也可能会产生一定的性能开销。它的耗时通常是比较短的,但具体耗时会受到多种因素的影响,如输出的内容长度、输出的目标(例如是输出到控制台还是文件)等。例如:a.cpp ,moc后,会生成moc_a.cpp
用户首次进行注册后,方可登陆进行游戏,对于闯关者即 breaker 而言,游戏每 3 个单词为一关,并随着已消除单词的个数不断增加难度,难度体现在单词长度不断增加,显示时间和输入时间不断变短。对于 maker 出题者而言,登陆后随时可以开始出题,出题界面会显示本次登陆所有出过的单词,如果输入了数据库中已有的单词,用户便会得到相应提示。闯关者需要在相应地方输入刚刚显示并消失的单词,如果闯关者输入正确
摘要:本研究设计了一种基于STM32F103C8T6单片机的两轮自平衡小车控制系统。针对传统两轮设备平衡性差、操控复杂的痛点,系统整合MPU6050姿态传感器、JDY31蓝牙模块和PID控制算法,实现了车体自主直立平衡与蓝牙遥控功能。硬件上采用模块化设计,包括主控、姿态检测、无线通信和电机驱动等单元;软件上通过串级PID算法实现精准控制,结合卡尔曼滤波提升数据精度。测试表明,系统平衡精度达±1°,
VSCODE安装C/C++ Extension Pack。
本文介绍了使用Qt C++解析JSON的核心方法和工业级实战方案。首先讲解了Qt处理JSON的四大核心类:QJsonDocument(文档解析)、QJsonObject(键值字典)、QJsonArray(数组列表)和QJsonValue(未确定类型节点)。然后通过一个配置文件解析的完整示例,展示了如何采用"数据结构+解析器"的解耦架构,实现安全可靠的JSON解析流程,包括文件读取、类型检查、默认值
让一个类(子类),直接拿到另一个类(父类)的所有功能和特性,不用自己再写一遍。你创建一个QObject父类(Qt 里所有支持信号槽的类的 “祖宗”)再写一个那么MyDevice就继承了QObject的所有功能(比如信号槽机制、父子对象内存管理),还能加自己的代码。类是类型,对象是变量,函数是动作;构造析构也是函数;C++ 允许多继承,但 QObject 子类只能单继承 QObject,其余用组合。
告诉 connect 连的是哪个函数。= "左边类里的右边函数"
摘要 本文深入解析了Qt框架的核心机制——信号槽系统,是系列教程的第二篇。文章从传统回调函数的局限性出发,对比分析了信号槽在类型安全、松耦合、自动断开和多对多通信等方面的优势。详细介绍了5种信号槽连接语法(重点推荐Qt5新语法和Lambda表达式),并演示了自定义信号槽的实现方法。同时讲解了连接类型(如跨线程必须使用Qt::QueuedConnection)、常见问题解决方案,以及Qt6的新特性。
本文是Qt系列教程第三篇,全面讲解Qt布局管理器的使用。文章首先对比传统硬编码布局的缺陷与布局管理器的优势,详细介绍了四大核心布局类(QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout)的特点和使用场景,并通过计算器、表单等实例演示具体实现。同时深入讲解了布局的高级特性,包括拉伸因子控制控件比例、边距与间距设置,以及通过嵌套布局构建复杂界面的方法。最后针
1、首次安装好pycharm,在pycharm右下角点将Python 3.13... --> Add New Interpreter-->Add Local Interpreter。若打开了python工程,则Python-->Console-->Python Interpreter也要选择Python 3.13的安装路径。或者从File-->Settings...-->Python-->Inte
本文是Qt系列教程的第四篇,详细介绍了Qt样式表(QSS)的使用方法。主要内容包括:QSS基础语法和选择器、常用控件的样式定制、深色主题的实现、伪状态和子控件的应用,以及通过PDF工具箱实例演示界面美化实战。文章对比了原生控件和QSS美化后的效果差异,提供了完整的深色主题配色方案和代码实现,并分享了QSS调试技巧和常见问题解决方案。通过学习,读者可以掌握使用QSS打造专业级深色主题界面的能力。系列
本文是Qt系列教程的第五篇,全面介绍了Qt框架提供的各类常用控件。文章将控件按功能分为五大类:按钮类(如QPushButton、QRadioButton)、输入类(如QLineEdit、QComboBox)、显示类(如QLabel、QProgressBar)、列表/表格类(如QListWidget、QTableWidget)以及容器类(如QTabWidget、QSplitter)。每个控件都提供了
使用c++和Qt进行软件开发,基于vs2022搭建环境,Qt安装参考,也是自己学习
qt
——qt
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net