下面红色部分为添加内容
第一步,增加单个设备复选按钮,位于MultiVehicleList.qml中
ColumnLayout {
id: innerColumn
anchors.margins: _margin
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.left
spacing: _margin
RowLayout {
Layout.fillWidth: true
QGCCheckBox{
id: singleSelector
onCheckedChanged:{
if(checked){
guidedActionsController.selectedVehicleCtl(_vehicle.id , 1)
}else{
guidedActionsController.selectedVehicleCtl(_vehicle.id , 0)
}
}
Connections{
target: selectedAll
onCheckedChanged:{
singleSelector.checked = selectedAll.checked
}
}
}
QGCLabel {
Layout.alignment: Qt.AlignTop
text: _vehicle ? _vehicle.id : ""
color: _textColor
}
之后添加全部设备的选择框
Column {
id: mvCommandsColumn
anchors.margins: _margin
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
QGCLabel {
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("The following commands will be applied to all vehicles")
color: _textColor
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
}
Row{
spacing: _margin
QGCCheckBox {
id: selectedAll
checked: false
onCheckedChanged :{
if(checked){
guidedActionsController.selectedVehicleCtl(0 , 1)
}else{
guidedActionsController.selectedVehicleCtl(0 , 0)
}
}
}
QGCLabel {
text: qsTr("all vehicles")
color: _textColor
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
}
}
在GuidedActionsController.qml中添加函数与变量
Item {
id: _root
//复选设备:开始
property var selectedVehiclelist: []
function selectedVehicleCtl(id,insert)
{
var i
//@param id :vehicle's id: 0:all
//@param insert 0:remove 1:insert
if (id===0){
if (insert){
selectedVehiclelist = []
var vehicles = QGroundControl.multiVehicleManager.vehicles
for (i = 0; i < vehicles.count ; i++){
selectedVehiclelist.push(vehicles.get(i).id)
}
}else{
selectedVehiclelist = []
}
}else{
var found=false
var tmp=[]
for (i = 0; i < selectedVehiclelist.length; i++){
if (selectedVehiclelist[i] === id){
if (!insert)
continue;
tmp.push(selectedVehiclelist[i])
found = true
}else{
tmp.push(selectedVehiclelist[i])
}
}
selectedVehiclelist = tmp
if (!found && insert){
selectedVehiclelist.push(id)
}
}
}
接下来在下面executeAction中添加
var vehicle和var i,j以便于下面使用
在下面的case中添加如下
case actionMVPause:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.pauseVehicle()
}
}
}
Break
case actionMVArm:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.armed = true
}
}
}
break
case actionMVDisarm:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.armed = false
}
}
}
break
case actionMVLand:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.guidedModeLand()
}
}
}
break
case actionMVRTL:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.guidedModeRTL()
}
}
}
break
case actionMVTakeoff:
rgVehicle = QGroundControl.multiVehicleManager.vehicles
for (j = 0; j<selectedVehiclelist.length;j++){
for (i = 0; i < rgVehicle.count; i++) {
vehicle=rgVehicle.get(i)
if (selectedVehiclelist[j] === vehicle.id){
vehicle.guidedModeTakeoff(actionAltitudeChange)
}
}
}
Break