- 博客(139)
- 资源 (6)
- 收藏
- 关注
原创 QT、QML、C++中常用功能整理(持续更新...)
● 说明: 把一些QML中常用到的,做一个简单的总结,目前未分类,未细化,未添gif图和实例,想到什么写什么,后续再补…1、将一个数字转化成16进制字符串形式function toHex(num){ return num<16? "0x0"+num.toString(16).toUpperCase() : "0x"+num.toString(16).toUpperCase();}2、小数点位数 xxx.toFixed(x),如:property real _pi:
2021-05-11 21:43:01
4981
10
原创 好东西都在这里,不点下看看吗(博客目录导航,持续更新中...)
所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧! 吴军喜欢用河流来类比一个人的影响力。他说一条河流的水量,是由河流的长度、深度和宽度这三个因素决定的,而一个人的影响力也是如此。我们每个人都会在意自身的影响力,因为影响力是我们幸福感和满足感的来源之一。我们自己感觉到的幸福感来源是多种多样的,而且每个人都不一样,比如说男欢女爱、财富都可以让我们感到幸福。但是学者们认为,幸福感的来源就只有两个,一个是基因的传承,二一个就是影响力。吴军曾经离开过谷歌两年,当2012年再度回到谷歌的时
2020-11-29 17:42:40
32323
92
原创 Codex实战:APP远程升级服务搭建(五)App端远程升级接入
摘要 本文介绍了QGC/地面站App端实现远程升级的完整流程,包括以下关键步骤: 配置升级服务器地址,注意保留/fra/路径 客户端通过POST请求/fra/check/update接口,携带versionCode等参数 服务端返回2000状态码表示有新版本,包含APK下载地址和更新说明 Android端比较versionCode判断是否需要升级 QML层实现更新弹窗,展示更新说明和下载/安装按钮 下载完成后通过JNI调用Android原生安装界面 文中还提供了服务端响应格式、客户端请求流程、QML弹窗示例
2026-06-13 15:16:35
357
原创 Codex实战:APP远程升级服务搭建(四)Node 服务端自动识别 APK 信息
本文介绍了如何在Node.js中解析APK文件并自动提取关键元数据。主要内容包括: 问题背景:APK中的AndroidManifest.xml是二进制格式,不能直接读取 解析流程:从APK(ZIP)→读取二进制XML→解析字符串池→提取应用信息 关键技术: 手动解析ZIP文件结构 处理Android二进制XML格式 解析字符串池和节点属性 处理资源ID引用 实现效果:自动获取包名、版本号、应用名称等关键信息,避免手动输入错误 这种方案无需依赖Android SDK或aapt工具,纯Node.js实现,适用于
2026-06-13 15:13:41
344
原创 Codex实战:APP远程升级服务搭建(三)后台管理页面(APK 上传、版本管理、多应用页签)
本文介绍了一个Android应用远程升级服务的后台管理系统。系统通过可视化Web界面解决手动维护JSON配置文件的问题,支持多应用、多渠道的版本管理。主要功能包括:登录验证、版本分组展示、APK上传及自动识别版本信息、版本增删改查等。后台架构采用轻量级设计,通过环境变量验证登录,所有API接口需管理员权限。该系统适用于需要维护多个Android应用版本升级的场景,提升了配置维护的效率和准确性。
2026-06-13 15:08:51
306
原创 Codex实战:APP远程升级服务搭建(二)阿里云ECS部署Node升级服务_Ubuntu_systemd_Nginx
文章摘要 本文详细介绍了在阿里云ECS Ubuntu服务器上部署Node.js远程升级服务的全流程。主要内容包括: 项目上传到服务器指定目录(/opt/gcs-update-server/server) 通过npm安装项目依赖(express等) 配置环境变量文件(端口、公网URL和管理密码) 设置systemd服务实现守护进程和自动重启 开放ECS安全组8080端口 本地和公网验证服务可用性 提供完整的部署流程图和常用命令 部署完成后,可实现App通过公网地址访问升级接口和下载APK文件,并通过syste
2026-06-13 15:03:38
607
1
原创 Codex实战:APP远程升级服务搭建(一)NodeJS_Express
本文介绍了一个轻量级的Android应用远程升级服务实现方案。该方案基于Node.js + Express构建,核心功能包括: 服务端架构: 提供健康检查接口/health 实现升级检查接口/fra/check/update 静态APK下载目录/updates 使用JSON文件管理版本配置(update-config.json) 核心逻辑: 客户端通过POST请求发送应用ID和当前版本号 服务端筛选符合条件的版本(匹配appId且enabled为true) 比较版本号(versionCode)判断是否需要升
2026-06-13 14:58:21
391
原创 QGC 二次开发(RTK):内置 NTRIP Client,实现 CORS 差分数据接入与 GPS_RTCM_DATA 转发
摘要 本文介绍了在QGroundControl二次开发中实现NTRIP Client功能的技术方案,用于接入CORS差分数据并通过MAVLink协议转发给飞控。主要内容包括: 功能实现效果:在RTK设置页面新增NTRIP Client选项卡,提供服务器连接、账号配置、GGA设置等功能,并显示连接状态和数据接收统计。 工作流程:从用户配置到NTRIP连接建立,再到差分数据接收、解析和转发至飞控的完整链路。 技术实现:通过新增NTRIPManager类实现核心功能,利用QGC现有设置系统添加配置项,并复用RTC
2026-04-28 20:36:06
882
原创 QT/QGroundControl 实战:Mission Planner 航线在 QGC 中出现 Takeoff 落到 (0,0) 的排查与修复
摘要 本文记录了QGroundControl二次开发中遇到的一个任务航线显示问题:当从飞机读取Mission Planner规划的任务时,起飞点(Takeoff)坐标异常显示为(0,0),导致地图上出现一条从任务起点到非洲几内亚湾的超长连线。问题根因在于QGC对飞机返回的(0,0)起飞坐标处理不当,错误地将其视为真实坐标而非"未指定坐标"的占位值。修复方案聚焦于TakeoffMissionItem类的坐标语义判断逻辑,新增了对(0,0)坐标的规范化处理,确保其能正确回落到任务起点位置。该
2026-04-11 09:59:26
647
原创 QGC 二次开发实战:Android 单机离线授权怎么落地
摘要 本文记录了QGroundControl二次开发中实现Android单机离线授权的技术方案。通过设备指纹、应用签名和私钥签发license.dat文件的组合,实现了APK在拷贝到其他设备后无法正常使用的授权机制。方案采用三层架构:Android Java层负责采集设备信息和验签,C++工具层管理授权状态,QML界面层处理授权拦截。授权文件license.dat保存在指定目录,校验流程包括产品ID、设备指纹、应用签名和签名验证。文章重点介绍了关键代码实现,包括Java层的设备信息采集和验签逻辑,以及整体授
2026-03-30 17:37:49
669
原创 QGC二次开发本地媒体浏览实战(二)FFmpeg最小系统实战
文章摘要:本文介绍了在QGC二次开发中,针对Windows平台本地视频播放不稳定问题,采用FFmpeg最小播放系统替代原有DirectShow链路的解决方案。作者通过平台分流设计,保留Android端的Qt5播放器,仅在Windows端替换为自定义FFmpeg播放器。重点阐述了如何正确接入FFmpeg库、解决文件读取问题(通过Qt接管文件IO)、以及建立基本的解码流程。该方案实现了Windows平台视频首帧显示和基本播放功能,为后续完善播放控制奠定了基础。
2026-03-27 10:41:36
849
原创 QGC二次开发本地媒体浏览实战(一)Qt5+DirectShow 在 Android正常_Windows为什么出问题
摘要 本文记录了QGC二次开发中实现本地媒体浏览功能时遇到的Windows视频播放问题。文章详细介绍了功能架构和实现过程,包括: 在飞行界面添加媒体浏览入口按钮,通过状态切换控制页面显示 将媒体页挂载到飞行界面顶层,避免与其他控件重叠 从AppSettings获取正确的照片和视频保存路径 Android和Windows平台文件URL处理差异 使用FolderListModel扫描目录文件并按后缀分类 主要问题是Windows平台视频播放失败,报DirectShowPlayerService错误,而Andro
2026-03-27 10:20:38
776
原创 Qt/QGroundControl 实战:接入 Skydroid(云卓) G20 遥控器 Android SDK 并实时显示摇杆与信号质量
本文记录了将Skydroid G20遥控器SDK接入Qt/QGroundControl Android项目的完整过程。通过三层架构实现:Java层负责SDK初始化和数据采集,Qt/JNI桥接层提供数据缓存与解析,QML层实现调试面板显示。重点解决了摇杆值轮询、信号质量监听、跨平台数据传递等关键技术问题,最终在飞行界面实时展示了遥控器连接状态、通道值及信号强度等关键参数。文章详细拆解了需求实现路径,并提供了实用的工程实践方案。
2026-03-16 16:32:36
1794
5
原创 QGC 中修改原生 Android 串口 BUG 实操
摘要:本文介绍了在QGC(QGroundControl)中修改原生Android串口实现的方法。原方案采用Java/JNI方式操作USB转串口设备,无法访问系统原生串口(如/dev/ttyS*)。新方案改用类Linux的POSIX串口实现,通过open()、termios和ioctl()直接操作系统设备文件,并集成到Qt事件循环。修改通过宏控制切换,包括屏蔽JNI逻辑、替换底层库等步骤,最终实现Android平台下对各类串口设备的统一访问。实测表明该方案适用于定制Android系统和高实时性场景。
2026-01-21 17:44:38
728
原创 Qt C++ 软件开发工程师面试题
摘要:本文整理了Qt C++常见面试题,涵盖Qt事件循环、元对象系统、隐式共享等核心概念。事件循环方面介绍了其原理、信号槽机制和典型流程;元对象系统部分解析了QMetaObject、信号槽、MOC工具等核心组件;隐式共享章节阐述了写时复制原理、QString示例和应用场景。全文通过代码示例和原理分析,帮助开发者深入理解Qt核心机制,为面试提供全面准备。
2025-11-08 02:02:50
2068
原创 Qt Quick 之动态旋转刻度盘(无人机中指南针 Demo )
本文介绍了一个基于QtQuick Canvas实现的旋转刻度圆Demo,用于无人机航向显示。该UI具有以下特点:1) 每15°一个刻度,主方向(N/NE等)加粗并标字母;2) 所有文字自动旋转保持"下边朝向圆心"的自然视觉效果;3) 中心固定指针作为参考方向;4) 模拟航向数据自动旋转。文章详细解析了文字朝向计算的关键技术:通过计算标签位置与圆心的向心向量确定旋转角度,确保文字始终可读。还提供了UI优化建议,如北向锁定切换、过渡动画等,
2025-08-05 16:22:57
1318
原创 多 Qt 版本共存中 QGC 环境搭建踩坑记录(附一键脚本切换环境变量)
本文总结了在Qt 5.12.6/5.15.2环境下开发QGC应用时遇到的三个典型问题及解决方案: 链接时出现relocation错误,需将NDK版本降级至21.3; Qt项目Kit解析失败问题,可通过删除配置缓存或重新git clone解决; 程序运行时"无法定位程序输入点"错误,需在windeployqt命令中添加--no-patchqt参数。文章还提供了Gradle下载过慢的优化建议。这些经验为使用相似开发环境的开发者提供了实用的调试参考。
2025-07-14 19:52:33
949
原创 WSL创建Ubuntu子系统与 VS code 开发
摘要:本文介绍了在Windows系统上配置WSL(Windows Subsystem for Linux)和Ubuntu的完整步骤。首先需在控制面板启用虚拟化功能并重启电脑,然后通过PowerShell安装WSL核心组件,再从Microsoft Store下载Ubuntu系统。接着指导用户在VSCode中安装WSL插件,连接Ubuntu环境,并通过Git Bash克隆项目进行开发。最后推荐了实用的VSCode扩展插件,帮助开发者高效使用WSL环境进行编程工作。
2025-07-09 15:12:48
808
原创 异形遮罩之QML中的 `OpacityMask` 实战
使用 OpacityMask 是 QML 中处理异形遮罩 + 统一色彩透明度的推荐方式。它不仅能解决“颜色叠加变深”的视觉问题,还提供了很强的图形控制能力。通过这种方式,你的界面设计会更干净、更专业,也更具“工业级”质感。
2025-04-11 21:48:15
1132
原创 Qt WORD/PDF(五)使用Json一键填充Word表格
QAxObject是 Qt 提供的一个类,它用于与 COM(Component Object Model)对象进行交互。COM 是一种微软的技术,广泛用于各种应用程序之间的通信,尤其在 Windows 平台上,很多软件和系统组件都是基于 COM 构建的。QAxObject 类提供了一个 Qt 风格的接口,简化了与这些 COM 对象的交互。此Demo主要功能是利用 Qt 和 Microsoft Word 的 COM 接口实现自动化操作,填充和高亮 Word 文档中的表格内容。
2025-01-13 12:20:41
1628
原创 QT Quick QML 实例之椭圆投影,旋转
此 Demo 主要用于无人机吊舱视角的模拟,这种动态调整椭圆比例和方向文字的功能可以很好地表示吊舱的俯仰角变化和视野方向。通过滑块调整俯仰角,椭圆比例随之改变,同时方向标记实时旋转,能够直观反映无人机当前的视角范围和角度变化。
2025-01-13 12:16:37
1046
1
原创 Qt 中使用 moveToThread 多线程踩坑记录
今天在使用 Qt 的实现多线程时,遇到了两个常见的坑,在这里记录一下,供自己和大家参考。
2025-01-13 12:13:22
1294
1
原创 Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
QAxObject是 Qt 提供的一个类,它用于与 COM(Component Object Model)对象进行交互。COM 是一种微软的技术,广泛用于各种应用程序之间的通信,尤其在 Windows 平台上,很多软件和系统组件都是基于 COM 构建的。QAxObject 类提供了一个 Qt 风格的接口,简化了与这些 COM 对象的交互。本文主要使用 QAxObject 操作 word 文档,使用键值对,对模板文件进行替换操作,导出相应的文档,特别适合输出报告。
2024-12-17 12:18:27
1989
原创 Qt WORD/PDF(三)使用 QAxObject 对 Word 替换(QML)
QAxObject是 Qt 提供的一个类,它用于与 COM(Component Object Model)对象进行交互。COM 是一种微软的技术,广泛用于各种应用程序之间的通信,尤其在 Windows 平台上,很多软件和系统组件都是基于 COM 构建的。QAxObject 类提供了一个 Qt 风格的接口,简化了与这些 COM 对象的交互。本文主要使用 QAxObject 操作 word 文档,使用键值对,对模板文件进行替换操作,导出相应的文档,特别适合输出报告。
2024-12-16 23:20:55
1304
原创 Qt WORD/PDF(二)使用 QtPdfium库实现 PDF操作、打印等
QtPdfium是基于Pdfium库的一个Qt绑定。Pdfium是一个由Google开发并开源的PDF渲染引擎,它被广泛应用于Chrome浏览器和其他一些Google产品中。QtPdfium则是一个专门将Pdfium引入Qt项目的封装,使得Qt应用程序可以使用Pdfium的PDF渲染功能。它的主要目标是高效的PDF文档渲染,特别是在Web浏览器等高性能需求的应用场景中。相较于Poppler,Pdfium侧重于简洁、高效的渲染和性能优化。
2024-12-16 12:08:53
2305
1
原创 Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览
Qt6 从版本 6.2 开始提供了对PDF的官方支持。这个模块基于 Pdfium,为Qt应用提供了原生的PDF渲染功能,使得开发者可以更方便地在Qt应用中集成PDF查看和处理功能。而我们为了更好的兼容性,一般采用Poppler或QtPdfiumPDF渲染引擎。Poppler是一个开源的PDF渲染库,基于xpdf项目,提供了一个强大的API用于PDF文档的解析和渲染。它支持将PDF转换为图像、提取文本、查找内容、以及更多PDF操作。它的优势在于功能全面且经过了广泛的测试。
2024-12-16 12:06:06
3307
3
原创 QGC 修改为双路视频介绍
C++ 中利用 QGC 原有的红外热成像视频流,修改几处即可。下一篇介绍三路及以上的视频配置。左下角切换地图与当前的视频。增加 ID=1 的配置。右下角切换视频通道;
2024-08-28 21:01:16
2225
9
原创 QT Quick QML 实例之定制 TableView
视图(如ListView)中请求模型的数据时,视图会调用 data() 函数,并传递相应的 QModelIndex 和 role, data() 函数会根据这些参数返回对应的数据。编辑数据: 当用户在视图中编辑数据(如在表格单元格中输入文本或选择复选框)时,视图会调用 setData() 函数,模型根据提供的新数据更新相应的项。:setData() 用于更新数据,而 data() 则用于获取数据。headerData() 通常与 data() 一起使用,前者用于表头的显示,后者用于表格中具体单元格的显示。
2024-08-24 15:32:26
2427
原创 QT C++ 中常见知识点
激发信号的Qt对象无需知道是哪个对象的哪个槽需要接收它发出的信号,它只需在适当的时间发送适当的信号就可以了,而不需要知道也不关心它的信号有没有被接收到,更不需要知道是哪个对象的哪个槽收到了信号。④ 多线程的时候,信号需要排队等待。QVariant里面会new一个用户自定义类型的内存,并调用拷贝构造函数,QVariant自身的赋值会使用共享内存管理 所以用户可以传入一个临时变量地址,如果用户传入的是一个指针,这个指针需要用户自己析构,改变这个指针的值,并不会改变QVariant,因为是两个不同的空间了。
2024-02-07 14:18:09
1718
原创 编译 Android gradle-4.6-all.zip 报错问题记录
编译QGC 4.1.3 安卓版本时,无法下载 gradle-4.6-all。
2023-12-08 15:38:49
1427
原创 windows 下 QT Android 环境搭建(QGC 4.2.x + Qt 5.15.2)
姊妹篇:win10下新版QGC地面站环境搭建全面攻略(v4.x.x QGroundControl地面站搭建)windows下 QT 的 Android 环境搭建(附软件测试和ADB调试工具)QGC 官方: Build QGroundControlQt version: 5.15.2 (only)Android : Android 5.0 and later.NDK: Standard QGC is built against ndk version 19.JDK : Java JDK
2023-11-06 22:56:27
4433
2
原创 QGC 中添加海康威视摄像头记录(Qt For Android 使用 JNI 进行JAVA 与 C++ 的通讯)
● QGCActivity.java 根文件中导入包并添加 HkwsManager 自定义的类。SDK libs 文件复制到 Android libs下。如下添加相应的动态库,当前使用的为v8a。工程文件 .pro 添加。
2023-11-06 22:31:23
1602
原创 Qt QJson 使用
QJson是一个用于 Qt 应用程序的 JSON 解析和生成库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性和可扩展性,常用于 Web 应用程序中。QJson 将 JSON 数据解析为 QJsonDocument 对象,同时可以将 QJsonDocument 对象转换为 JSON 数据。♦ 常用的 QJson 类包括:表示一个 JSON 文档,包括了一个 QJsonObject 或 QJsonArray 对象。
2023-05-16 22:08:35
1413
原创 ChatGPT、Midjourney不香了吗,New Bing 已向全球个人开放
之前还在排队之中,没想到前几天new bing就突然全部开放了:总体感觉,Bing Chat 使用难受,说是chat4.0,不知道是不是我没有设置正确,感觉比 ChatGPT(3.5) 差了不少, 就是个搜索引擎plus;而Bing AI 绘画相对好一点,因为Midjourney。
2023-05-14 19:58:47
3714
1
原创 Qt QQueue 安全的多线程队列、阻塞队列
public ://唤醒等待队列中的一个线程(来自wait) } T take() {这个 BlockingQueue类使用QMutex和QWaitCondition来保证线程安全,并实现了put、take、isEmpty和size等方法。其中,put方法用于往队列中插入元素,take方法用于从队列中取出元素,isEmpty方法用于判断队列是否为空,size方法用于获取队列中元素的数量。
2023-05-07 22:03:03
13057
1
原创 Qt 智能指针介绍: QSharedPointer、QWeakPointer 、QScopedPointer 、QPointer(附实例)
在使用动态内存分配的情况下,需要确保对象的所有权正确地被管理和转移。使用智能指针可以帮助我们自动管理对象的生命周期和所有权,避免内存泄漏和悬挂指针的问题。♦ 什么时候需要用到智能指针?在使用QObject对象的情况下,需要确保对象的生命周期和父子关系正确地被管理。QObject对象的生命周期受到父子关系的影响,因此需要使用QPointer等智能指针来管理QObject对象的指针。多线程编程中,需要确保多个线程访问共享对象时不会发生竞态条件。
2023-05-06 11:11:42
5552
qgc_stab_v4.0.0.zip
2020-03-20
qgc_v4.0.11.rar
2020-12-21
MenusPro.zip
2020-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅