1.一些修改
(1)五大功能图标修改(位置,内容等属性)
在MainToolBar文件中找到对应的五大按钮,其中 sourse 后面即为图标文件 改的是样式
(2)在FlightDisplayViewWidgets.qml中修改仪表盘和指南针位置
(3)在QGCInstrumentWidgetAlternate.qml中修改参数显示的位置
eg:设置控件层级: z: _panel.z + 1
(4)将视频设置为主页面显示:
①废弃地图显示:
在flightdisplayview.qml中,将QGCViewPanel类下的第一个子类Item (flightmapcontainer)注释即可
②将视频设置为主显示:(填满整个屏幕)
将item类里的窗口尺寸width,height固定为_panel.width,_panel.height 以及将边缘空隙margins去除。
③废弃页面左下角小窗口的功能
左下角小窗口对应的QGCPipable,将功能函数全部注释(点击切换,大小调整等),没有将它整体注释是因为部分模块的锚布局与之有关,全部注释会影响那些部分显示异常。
(5)flightdisplayview中的_flightVideo ,设置了视频显示的状态(各种state)
下面是视频加载,loader中可见,videomanager中的uvcEnabled为真则加载视频(FlightDisplayViewUVC.qml),为假则加载一个黑屏(FlightDisplayViewDummy.qml)
___flightVideo的下方,有个QGCPipable对象,对应视频窗口控件(小框,也对应flightVideo里的各种state)
onActived是点击框时切换全屏,onHideIt是左下角隐藏,pupup是左上角的弹出选项,onNewwidth是拖动改变小窗口尺寸。
添加新视频窗口:
①复制flightvideo和pipcontrol两个对象,重新命名,
②额外添加功能函数
视频显示状态函数,添加各部分的状态改变,fullmode是全屏,pipmode是画中画模式
③复制window(window属于视频显示的前端,一个窗口)
(6)独立视频窗口 对其进行修改,使视频窗口随地面站同时启动
videoWindow,这个窗口是用来将视频窗口独立出去的(原程序的设定)
因此可以直接将**Item视频组件 _flightvideo 放置到videoWindow中,并将**videoWindow的可见属性设置为true,即可实现。
这个Item组件中的state是用来控制视频窗口的显示方式的,全部注释即可,锚布局使其填充整个父窗口。
最下方的onClosing在原程序设定中,是用来在关闭独立窗口时改变Item的状态,这里将它注释掉
(7)mainwindowinner、maintoolbar、flightdisplay等文件的区别
(8)飞行数据在Vehicle.cc中实现
2.qt中loader的作用
Loader用来动态加载QML组件,可以看做是一种占位符,可以加载一个QML文件(使用source属性)或者一个组件对象(使用sourceComponent属性),Loader主要用于延迟组件的创建,使一个组件的创建被延迟到真正需要的时候。
3.以下 QGC 控件基于标准 Qt QML Controls 开发,与 Qt 标准控件功能相同,只是其颜色由 QGC palette 提供。
QGCButton QGCCheckBox
QGCColoredImage QGCComboBox
QGCFlickable QGCLabel QGCRadioButton
QGCSlider QGCTextField QGC Controls
4.QGC**连接:可通过串口、UDP、TCP、Mock以及日志回放方式和地面站建立连接
整体页面规划:SetupView.qml:**Sources——src——VehicleSetup
Sources——src——AutoPilotPlugins——PX4
PlanView.qml:**Sources——src——**PlanView
main.cc、QGCApplication.cc:**Sources——src——ViewWidgets
QGroundControlQmlGlobal.cc:Sources——src——QmlControls
控制指令:vehicle.cc:Sources——src——vehicle
最好不要用中文注释
精简:AppSettings.qml目录下删除 对应资源文件删除
readonly property real 自定义属性
添加自己定义的属性时, 需要使用property修饰符, 然后跟上类型, 名字和可选择的初始化值
QGCCommon文件夹:QGCCommon.pri包含QGC应用程序和位置插件共同的配置设置,主要包含初始CONFIG标记设置和编译器设置
QGCLocationPlugin文件夹:QtLocation插件,一些C++源文件和头文件**
5.控制指令的实现
sendMessageOnlink()
左侧操作 对应displayview里toolstrip控件的一个list
qgc界面是用qml开发,和后台通信机制关键就是C++类注册为 qml 可访问类型
通过Q_PROPERTY声明操作的方法