前言
QGC版本:4.1.1
开发平台:Win11 + QT5.15.2 + VS2019
原始代码:
链接:https://pan.baidu.com/s/1H68Rz-4tO70-qI33HNU_bA?pwd=FYTf
提取码:FYTf
内容:QGC软件配置保存功能实现方法。用于二次开发中新添设置选项,针对该功能讲解代码实现方式。下面我们以常规设置飞行视图中的“Show simple camera controls (DIGICAM_CONTROL)”该复选框为例子。
提示:以下是本篇文章正文内容,下面案例可供参考交流学习所用,如有错误谢谢指正。
一、涉及到的文件
1、qml文件
GeneralSettings.qml 该文件是“Application Settings”中常规设的界面代码。
2、c++文件
QGCApplication.cc 该类是QGC数据交互的主体,QGC将相关的类在其中构造并将App作为一个全局的静态变量通过qgcApp()
来访问。
QGroundControlQmlGlobal.h 起到了连接 C++ 和 QML 的作用,使得开发者可以在 QML 中方便地访问 C++ 中的全局对象、函数和常量。
FlyViewSettings.cc 常规设置,飞行视图设置保存功能接口。
SettingsManager.h 设置管理类 。
3、json文件
FlyView.SettingsGroup.json 用于保存常规设置飞行视图默认值的文件。
二、调用步骤
1、以常规设置飞行视图中的"Show simple camera controls (DIGICAM_CONTROL)"为例。
2、GeneralSettings.qml中对应的代码。采用QGC自定义复选框样式。通过“_showDumbCameraControl”的定义实现功能。
//GeneralSettings.qml
FactCheckBox {
text: qsTr("Show simple camera controls (DIGICAM_CONTROL)")
visible: _showDumbCameraControl.visible
fact: _showDumbCameraControl
property Fact _showDumbCameraControl:
QGroundControl.settingsManager.flyViewSettings.showSimpleCameraControl
}
3、通过“_showDumbCameraControl”的调用路线可知,在 “QGCApplication.cc”中将“QGroundControlQmlGlobal”类注册。
//QGCApplication.cc
qmlRegisterSingletonType<QGroundControlQmlGlobal> ("QGroundControl", 1, 0, "QGroundControl", qgroundcontrolQmlGlobalSingletonFactory);
4、在“QGroundControlQmlGlobal.h”中将类"SettingsManager“注册。
//QGroundControlQmlGlobal.h
Q_PROPERTY(SettingsManager* settingsManager READ settingsManager CONSTANT)
5、在“SettingsManager.h”中将类"FlyViewSettings“注册。
//SettingsManager.h
Q_PROPERTY(QObject* flyViewSettings READ flyViewSettings CONSTANT)
6、在“FlyViewSettings.cc”中通过调用“DECLARE_SETTINGSFACT”宏来保存设置值。
//FlyViewSettings.cc
DECLARE_SETTINGSFACT(FlyViewSettings, showSimpleCameraControl)
7、在 “ FlyView.SettingsGroup.json”文件中设置默认值。
//FlyView.SettingsGroup.json
{
"name": "showSimpleCameraControl",
"shortDesc": "Show controls for camera triggering using MAV_CMD_DO_DIGICAM_CONTROL.",
"type": "bool",
"default": true
}
三、成果展示
新增一个为“test”的复选框。
//FlyView.SettingsGroup.json
{
"name": "test",
"shortDesc": "test",
"type": "bool",
"default": true
},
//FlyViewSettings.h
DEFINE_SETTINGFACT(test)
//FlyViewSettings.cc
DECLARE_SETTINGSFACT(FlyViewSettings, test)
//GeneralSettings.qml
FactCheckBox {
text: qsTr("test")
visible: _test.visible
fact: _test
property Fact _test: QGroundControl.settingsManager.flyViewSettings.test
}
添加完成后重新编译该项功能完成。
标签:cc,QGC,地面站,json,qml,test,软件,FlyViewSettings From: https://blog.csdn.net/qq_45259133/article/details/143479716