- 博客(23)
- 收藏
- 关注
原创 C++QT QTableWidget内容设置
本文介绍了QTableWidget控件的使用方法和常见问题解决方案。通过初始化表格样式、填充数据和实现交互功能三个步骤,详细展示了如何创建一个包含序号、名称、颜色选择按钮和复选框的表格。重点内容包括:1)通过setStyleSheet设置表头样式;2)使用insertRow动态添加行数据;3)通过setCellWidget嵌入颜色按钮和复选框控件;4)实现颜色选择对话框和复选框状态变化的交互逻辑。文章还提供了完整的代码示例,可作为QTableWidget的使用模板,解决了开发中常见的控件使用不当导致崩溃的问
2025-07-24 11:14:45
191
原创 C++QT 使用mqtt实现实时通信
本文介绍了MQTT协议的核心概念及在Qt中的实现方法。MQTT是一种轻量级的发布/订阅协议,包含代理服务器、QoS质量等级等核心组件。重点讲解了QtMqtt模块中的三个核心类:QMqttClient(管理连接和消息发布)、QMqttSubscription(主题订阅管理)以及消息发布方法。文章提供了多线程实现MQTT通信的完整流程,包括客户端初始化、消息接收解析和发送的具体代码示例,特别强调了JSON数据格式的处理和重试机制的设计。通过定时器和队列管理,实现了稳定的实时通信功能,适用于物联网设备间的数据交互
2025-07-23 16:51:51
903
原创 C++QT上位机实现Modbus RTU协议
本文记录了初次实现串口通信协议的开发过程。首先介绍了串口通信协议的基本概念,包括RS-232、RS-485等物理层标准、数据帧格式和关键参数配置。重点讲解了使用C++ QT实现Modbus RTU协议的步骤:创建QModbusRtuSerialClient主站对象、配置串口参数(波特率、数据位等)、连接设备状态监控、发送请求并处理响应。文章强调参数匹配的重要性,并提供了常见问题排查方法,最后指出虽然协议原理复杂,但通过代码实践可快速掌握基本实现。
2025-07-18 13:35:58
865
原创 C++QT中使用事件过滤器来响应QLabel的点击函数
本文介绍了在Qt登录界面中使用QLabel控件实现密码可见性切换功能的两种方法。重点阐述了基于事件过滤器的实现方案:通过创建LabelEventFilter类继承QObject,重写eventFilter函数来拦截鼠标点击事件,动态切换眼睛图标(显示/隐藏密码图标)并发出状态变更信号。该方法相比重写QLabel子类,具有避免代码耦合、支持动态控制等优势。文中还简要说明了事件过滤器机制的核心价值,包括事件拦截处理、无需子类化、集中事件管理等特性,并给出了具体代码实现示例。
2025-07-14 17:15:27
415
原创 C++QT单例模式
Qt中单例模式的应用与注意事项 摘要:本文介绍了Qt项目中单例模式的使用场景和实现方法。单例模式适用于需要全局访问的组件,如事件总线、配置管理等。文章通过EventDispatcher类的示例展示了Qt单例的实现方式,使用static局部变量确保线程安全。同时指出了单例模式可能带来的测试困难等问题,并推荐了适合使用单例的场景,包括硬件抽象层、事件调度器、共享缓存等。强调了首次调用时机的重要性,建议在程序初始化时尽早创建实例。
2025-07-07 13:45:34
211
原创 C++QT全局事件总线设计
本文介绍了在Qt框架中实现全局事件总线的两种方法。第一种采用模板化的发布-订阅模式,通过泛型编程实现类型安全的跨组件通信,包含实例代码展示如何定义EventBus类、订阅事件和发布事件。第二种展示常规信号槽实现方式。两种方案均采用单例模式,分析了单例模式在事件总线中的优势:提供全局访问点、资源优化和简化通信结构。文章还列举了事件总线的典型应用场景,如跨窗口通信、插件系统和模块解耦等。最后指出单例模式在大型系统中的适用性,建议后续深入研究。
2025-07-07 09:58:29
286
原创 WGS-84与GCJ-02(高德)转换
摘要:本文介绍用于坐标系转换的QGCTransform类,实现WGS-84与GCJ-02坐标系的相互转换。代码基于C++11标准,包含度分转换、坐标偏移计算等核心算法,采用克拉索夫斯基椭球参数进行精确计算。类方法包含:判断国内坐标范围的outOfChina()、度分转换dmToDegrees()、经纬度偏移计算transformLat/Lon()以及核心转换函数wgs84Togcj02()。该代码已在VS2022+QT5.15.2环境下测试通过,适用于需要处理中国加密坐标的GIS应用开发。代码结构清晰,通过
2025-05-30 09:35:02
322
原创 C++QT qss样式表美化
本文介绍了Qt界面设计中多个控件的样式定制方法,包括QLabel、QLineEdit、QGroupBox、QToolButton、QComboBox和QSpinBox。重点展示了QToolButton的复杂样式实现:通过样式表设置基础状态、悬停状态和按下状态的样式变化,并详细说明了事件过滤器(EventFilter)的运用,以解决Qt原生无法实现图标切换的问题。文章还介绍了分组按钮的特殊样式处理,以及如何为其他控件设置圆角、边框、悬停效果等常见样式属性,这些技巧能显著提升Qt应用程序的视觉体验。
2025-05-27 10:23:28
332
原创 vs+qt自定义QTabWidget界面
本文展示了一个基于Qt框架的自定义标签页控件实现。通过继承QTabBar和QTabWidget创建了TabBar和CustomTabWidget类,主要功能包括:1) 自定义标签尺寸计算和布局,支持图标、文字和间距设置;2) 支持自定义标签图标和样式;3) 可配置字体大小、图标宽度和内边距;4) 通过样式表实现圆角和颜色定制。文中特别提到实现过程中遇到多层QWidget叠加导致的背景色设置问题,最终通过透明化最上层控件解决了该问题。调用示例展示了如何创建带图标的标签页,并提供了与自定义标题栏结合使用的布局方
2025-05-26 17:09:36
178
原创 VS+QT使用qss设计自定义标题栏
本文展示了一个基于Qt框架的自定义标题栏实现方案。该方案通过NormalTitleBar类继承QWidget,提供了灵活的标题栏定制功能,包括:1) 支持logo图标和项目名称显示;2) 可配置的按钮组合(最小化/最大化/关闭);3) 自定义样式和布局控制;4) 窗口拖动和双击最大化功能。实现中采用了面向对象设计,通过枚举类型区分不同按钮组合,并提供两种典型的使用模式:作为独立组件或在现有界面中嵌入。代码还展示了如何通过重写paintEvent实现圆角窗口效果,体现了Qt框架在GUI定制方面的灵活性。
2025-05-26 16:44:01
178
原创 VS+QT使用Q3DScatter实现实时三维无人机飞行轨迹
之前的无人机项目需要有一个三维图表用来展示无人机实时的飞行轨迹图,之前我也没接触过三维图表相关的内容,查找了一番资料之后确定了使用Q3DScatter来实现这个操作。
2025-04-29 14:35:00
432
原创 C++QT中的异步QtConcurrent与多线程,如何选取?
优先选择:适用于简单、独立的并行任务,代码更简洁,资源利用率更高。使用QThread:当需要精细控制线程行为或处理长期运行、复杂的多线程交互时。根据任务需求灵活选择,混合使用不同机制(如结合信号槽)可进一步提升效率。
2025-04-28 10:36:24
428
原创 C++QT中如何使用多线程
Qt的信号槽不直接支持异常传递,需在槽函数内部捕获异常并通过信号传递错误信息。:使用moveToThread或QtConcurrent::run。:使用Valgrind、Qt Creator的调试器分析线程问题。:确保线程和Worker对象在完成后正确删除,避免内存泄漏。:使用QueuedConnection确保线程安全。Qt的信号与槽自动处理跨线程通信,需注意连接类型。:在槽函数内捕获异常,通过信号传递错误。:处理耗时任务,通过信号与主线程通信。:检查锁的获取顺序,确保一致。:正确释放线程和对象资源。
2025-04-28 10:21:04
506
原创 C++QT调用高德地图Api展示实时无人机飞行轨迹
最近公司要做一个关于无人机飞行测量某种物质的项目,但是作者只在大学的时候接触过JS,上班之后致力于C++,已经忘了JS相关内容。不过那段时间正好deepseek横空出世,帮我解决了这个大难题,在这里记录一下学习历程。这里调用的是高德地图的Web端的接口,环境:VS2022+QT5.15.2。
2025-04-19 16:14:10
1132
原创 VS2019+QT5.15.2 使用Release版本编译SQLite出现Driver not loaded的错误
写了简单的打开数据库创建表的操作,在debug模式下运行十分顺畅,本以为这样就弄完了这部分,使用Release模式重新测试一下整个项目,但是发现数据库这里到open就报错,输出一下错误提示,发现是driver not loaded(应该是这个错误,昨天错的时候没有记录下来)。东找西找修改了好多种解决方式,最后无意间发现将QT安装路径下。但是看别的博主发的,打包之后可能还会有问题,等我打包出现问题的话继续记录。
2025-04-18 10:37:12
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人