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)

    QGC二次开发(一) - 图1

    下面是视频加载,loader中可见,videomanager中的uvcEnabled为真则加载视频(FlightDisplayViewUVC.qml),为假则加载一个黑屏(FlightDisplayViewDummy.qml)

    QGC二次开发(一) - 图2
    ___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二次开发(一) - 图3

    qgc界面是用qml开发,和后台通信机制关键就是C++类注册为 qml 可访问类型
    通过Q_PROPERTY声明操作的方法