不仅仅是MissionController、还有GeoFenceController、还有
RallyPointController
都是qmlRegisterUncreatable类型
//不需要创建对象,直接在qml中使用?
qmlRegisterUncreatable<MissionController>
(
"QGroundControl.Controllers",1,0,"MissionControlle"
)
masterController是PlanMasterController.cc的
PlanMasterController {
id: masterController
Component.onCompleted: {
start(true /* editMode */)
setCurrentItem(0, true)
}
function upload() {
if (_activeVehicle && _activeVehicle.armed && _activeVehicle.flightMode === _activeVehicle.missionFlightMode) {
_qgcView.showDialog(activeMissionUploadDialogComponent, qsTr("Plan Upload"), _qgcView.showDialogDefaultWidth, StandardButton.Cancel)
} else {
sendToVehicle()
}
}
function loadFromSelectedFile() {
fileDialog.title = qsTr("Select Plan File")
fileDialog.selectExisting = true
fileDialog.nameFilters = masterController.loadNameFilters
fileDialog.openForLoad()
}
function saveToSelectedFile() {
fileDialog.title = qsTr("Save Plan")
fileDialog.selectExisting = false
fileDialog.nameFilters = masterController.saveNameFilters
fileDialog.openForSave()
}
function fitViewportToItems() {
mapFitFunctions.fitMapViewportToMissionItems()
}
}
start()
在PlanMasterController.cc中
void PlanMasterController::start(bool editMode)
{
_editMode = editMode;
_missionController.start(editMode);
_geoFenceController.start(editMode);
_rallyPointController.start(editMode);
connect(_multiVehicleMgr, &MultiVehicleManager::activeVehicleChanged, this, &PlanMasterController::_activeVehicleChanged);
_activeVehicleChanged(_multiVehicleMgr->activeVehicle());
}
本文介绍了QGroundControl中几种控制器(MissionController, GeoFenceController, RallyPointController)的注册方式及其在qml中的使用方法,并展示了PlanMasterController类如何初始化这些控制器并与之交互。
2868

被折叠的 条评论
为什么被折叠?



