【Qt笔记】C++大作业项目报告
项目地址
Github:https://github.com/stephen-zeng/Mobile-Mouse/
Gitee:https://github.com/stephen-zeng/Mobile-Mouse/
QQ空间吃链接是真的蚌埠住🤣
调用的框架&编译框架
- Qt - 项目大框架,负责调用蓝牙通信,处理传感器数据,连接前后端
- GUI - 使用QtQuick,类CSS与JS语言风格,从前端开发几乎无缝切换
- CoreMotion - 天杀的iOS获取个传感器数据还要用原生API,使用Objective-C++,因为Swift不好集成到Qt项目中(我真不想用obj-c++)
- QMake - QMake的语法相比CMake简单很多,而且原生支持Qt,非常方便
- cliclick - 负责macOS的鼠标模拟(天杀的macOS不支持原生C++模拟鼠标)
- windows.h - 负责Windows的鼠标模拟
文件及其作用
前端文件 | 作用 |
---|---|
Client.qml | 桌面端程序扫描移动端的界面 |
Connect.qml | 桌面端连接移动端的界面 |
Footer.qml | 所有界面的页脚部分 |
Header.qml | 所有界面的页头部分 |
Label.qml | 标题部分,已集成到Header.qml中 |
Main.qml | 负责页面切换以及检测 |
Mode.qml | 负责检测&选择客户端 |
Server1.qml | 按键操控界面 |
Server2.qml | 传感器操作界面 |
后端文件 | 作用 |
---|---|
getsensor.h | 定义获取传感器数据的接口 |
getsensor.cpp / getsensor.mm | 获取传感器数据 |
getserver.h / getserver.cpp | 负责桌面端的逻辑后端 |
beserver.h / beserver.cpp | 负责移动端的逻辑后端 |
info.h / info.cpp | 移动端的蓝牙信息格式 |
mousemove.h | 定义鼠标移动的接口 |
mousemove_mac.h / mousemove_mac.cpp | 负责macOS的鼠标移动 |
mousemove_win.h / mousemove_win.cpp | 负责Windows的鼠标移动 |
项目执行逻辑
见下面的思维导图
蓝牙通信过程
¶桌面端
- 创建好蓝牙扫描实例、蓝牙服务发现实例
- 定义好蓝牙扫描实例不同信号的处理方式
- 开始扫描
- 过滤没有名称的设备,过滤重复发现的设备,将新设备写入列表中
- 指定连接设备
- 开始搜索设备提供的服务
- 创建服务实例,保存并比对发现的服务
- 连接服务,获取数据
- 通过通知服务是否正常来检测连接是否断开(本程序使用的HearRateServer服务带有通知服务)
¶移动端
- 创建广播实例,设置广播的设备名
- 定义广播的数据类别,创建广播的数据
- 创建广播控制器实例
- 定义好广播控制器不同信号的处理方式
- 开始广播
- 从前端获取数据
- 将数据写入广播数据中,并将数据广播
收获
- Qt提供了非常多好用的API,利用这些API可以快速实现相对复杂的功能。
- Apple平台在多平台开发当中不是很友好,需要单独进行适配。
- 用户界面还是用类前端语言比较方便,QWidget迁移到QtQuick应该是大势所趋
- 对于重要数据的保存要遵循321原则,即三个备份,两种介质,一个异地。在我这两种介质是外置硬盘和内置硬盘,一个异地是云。为什么这么说么?因为有一天晚上我就错误地把
getserver.cpp
给删掉了,那天晚上简直炸裂🤣
【Qt笔记】C++大作业项目报告
https://学习.fun/ml-note/qt-hw-summary/