目錄
- 一. 前言
- 二. 程式
所有的熱愛都要不遺余力,真正喜歡它便給它更高的優先級,和更多的時間吧!
關于QGC地面站其它文章請點擊這里: QGC地面站
一. 前言
● BUG介紹:
在v4.0.4版本后,地面站原始碼在添加航點時,增加了防止用戶誤操作的功能,什么意思呢? 比如一開始 “航點” 的按鈕是灰色的,只能在添加 “Takeoff” 后才可以添加航點,而且 “Takeoff” 按鈕只能在 “Mission Start” 第一個點之后才會使能;同樣 “Return” 也只能在最后一個航點才能添加,
這樣還是灰常人性化滴,但是~ 如 gif 所示,在我正常操作添加后,“航點” 黃色高亮了,這時,我點擊第一個航點 “Mission Start”,“航點” 按鈕變為了灰色,但是點擊地圖照樣還可以添加航點;同樣在“Return To Launch” 后也依舊可以添加航點,接下來就看看是啥原因吧!
v4.0.11 QGC原始碼:“Mission Start” 點后失能還能添加

v4.0.11 QGC原始碼:“Return to Launch” 點后失能還能添加

解決之后:
“Mission Start” 第一個點不能再添加; “Return to Launch” 點后也不能再添加,

二. 程式
原始碼版本位v4.0.11,想要原始碼的可以看我的其它文章哦
我們直接來到 “Planview” 的 “Toolstrip”:
//PlanView.qml:576
ToolStrip {
id: toolStrip
...
model: [
...
{
name: _editingLayer == _layerRallyPoints ? qsTr("Rally Point") : qsTr("Waypoint"),
iconSource: "/qmlimages/MapAddMission.svg",
buttonEnabled: _isRallyLayer ? true : _missionController.flyThroughCommandsAllowed,
buttonVisible: _isRallyLayer || _isMissionLayer,
toggle: true,
checked: _addWaypointOnClick
},
...
]
function allAddClickBoolsOff() {
_addROIOnClick = false
_addWaypointOnClick = false
}
onClicked: {
switch (index) {
...
case waypointButtonIndex:
if (_addWaypointOnClick) {
allAddClickBoolsOff()
setChecked(index, false)
} else {
allAddClickBoolsOff()
_addWaypointOnClick = checked
}
break
...
}
“ToolStrip” 中的每一個按鈕的否點擊屬性(“checked”)和使能屬性(“buttonEnabled”), 都由 “Planview” 中的 “ToolStrip” 的 “model” 來決定的,而 “航點” 的 “checked” 由 “_addWaypointOnClick” 屬性決定, “buttonEnabled” 由 “_missionController.flyThroughCommandsAllowed” 來決定, “flyThroughCommandsAllowed” 屬性感興趣的朋友可以仔細查看它的來龍去脈,這里就不啰嗦,反正就是各種限制條件,
當我們添加航點后, 點擊了 “Mission Start” 第一個航點,這個時候 “flyThroughCommandsAllowed” 屬性其實為真,是不予允許添加的,但是之前添加航點后使得 “_addWaypointOnClick” 為 真了,而 “_addWaypointOnClick” 決定了點擊地圖的時候是否添加航點,如下
//PlanView.qml:387
FlightMap {
id: editorMap
...
MouseArea {
anchors.fill: parent
onClicked: {
switch (_editingLayer) {
case _layerMission:
if (_addWaypointOnClick) {
insertSimpleItemAfterCurrent(coordinate)
}
...
}
所以關鍵是 “flyThroughCommandsAllowed” 更新了, 而 “_addWaypointOnClick” 沒更新,所以增加個信號連接器,則問題迎刃而解:
//PlanView.qml 373 增加到 Planview.qml的根檔案下
Connections {
target: _root._missionController
onFlyThroughCommandsAllowedChanged: {
if (_visualItems.count > 1 && _missionController.flyThroughCommandsAllowed === false) {
_root._addWaypointOnClick = false
}
}
}
關于QGC地面站其它文章請點擊這里: QGC地面站
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/239552.html
標籤:其他
上一篇:CMS 內容管理系統
