##handheld-navigator手持导航仪
本项目为一个基于qt4和嵌入式linux系统的简易北斗导航仪,功能界面模仿自Furuno GP30船载导航仪。为学习QtE和C++时做的demo。
###线程 本项目定义为在海船上使用的导航仪,故最重要的功能是卫星数据的接收与显示,且使用按键操作。由于基于嵌入式Linux设备,故使用一个独立的线程定时进行串口读取,并同时用这个定时器完成界面的刷新;又编写自定义驱动,通过阻塞方式获取按键数据,再通过信号与槽方式实现功能。
###按键 本项目使用了六个按键,分别是四个方向键和一个确认键,一个界面切换键。
###数据抽象
- 卫星、按键数据的实现作为全局变量在main.cpp中被创建,在各个子界面中作为外部变量被使用。
- 储存途径点坐标的链表的实现作为全局变量在plotter.cpp中被创建,在各个子界面中作为外部变量被使用。
###子界面 为显示四个功能界面,主框架为一QStackedWidget,各子界面继承自QWidget。通过按键可循环切换四个页面。
- navdata:显示时间、经纬度、速度、航向角
- plotter:显示经纬度、速度、航向角,以及一图形化的途径点设置界面(QGraphicsView实现)
- highway:显示航向角、方向角、速度、到途径点距离,以及一图形化仿3D导航界面(QPainter实现)
- sterring:显示航向角、方向角、速度、到途径时间,以及一图形化仿罗盘导航界面(QPainter实现)
###美化 为了实现自适应分辨率,各个界面在获取设备分辨率后按比例绘制。并使用qss加上贴图和立体效果。