地面站终端 App
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
4.4 KiB

New Crowdin updates (#10902) * New translations joystick.md (Turkish) * New translations joystick.md (Persian) * New translations motors.md (Turkish) * New translations motors.md (Persian) * New translations motors_ardusub.md (Turkish) * New translations motors_ardusub.md (Persian) * New translations parameters.md (Turkish) * New translations parameters.md (Persian) * New translations power.md (Turkish) * New translations power.md (Persian) * New translations radio.md (Turkish) * New translations radio.md (Persian) * New translations safety.md (Turkish) * New translations safety.md (Persian) * New translations safety_ardupilot.md (Turkish) * New translations safety_ardupilot.md (Persian) * New translations sensors.md (Turkish) * New translations sensors.md (Persian) * New translations sensors_ardupilot.md (Turkish) * New translations sensors_ardupilot.md (Persian) * New translations sensors_px4.md (Turkish) * New translations sensors_px4.md (Persian) * New translations setup_view.md (Turkish) * New translations setup_view.md (Persian) * New translations tuning.md (Turkish) * New translations tuning.md (Persian) * New translations tuning_arducopter.md (Turkish) * New translations tuning_arducopter.md (Persian) * New translations tuning_ardupilot.md (Persian) * New translations tuning_ardusub.md (Russian) * New translations tuning_px4.md (Russian) * New translations support.md (Russian) * New translations toolbar.md (Russian) * New translations index.md (Russian) * New translations parameter_download.md (Russian) * New translations plan_upload_download.md (Russian) * New translations qgc.ts (Korean) * New translations qgc.ts (Russian) * New translations qgc.ts (Turkish) * New translations tuning_ardusub.md (Turkish) * New translations tuning_ardusub.md (Persian) * New translations tuning_px4.md (Turkish) * New translations tuning_px4.md (Persian) * New translations support.md (Turkish) * New translations support.md (Persian) * New translations toolbar.md (Turkish) * New translations toolbar.md (Persian) * New translations index.md (Persian) * New translations parameter_download.md (Turkish) * New translations parameter_download.md (Persian) * New translations qgc.ts (Chinese Simplified) * New translations qgc.ts (Persian) * New translations index.md (Chinese Simplified) * New translations command_line_options.md (Chinese Simplified) * New translations communication_flow.md (Chinese Simplified) * New translations coding_style.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations licences.md (Chinese Simplified) * New translations pull_requests.md (Chinese Simplified) * New translations unit_tests.md (Chinese Simplified) * New translations custom_build.md (Chinese Simplified) * New translations fact_system.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations mavlink.md (Chinese Simplified) * New translations parameters.md (Chinese Simplified) * New translations plan.md (Chinese Simplified) * New translations firmware_plugin.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations mock_link.md (Chinese Simplified) * New translations controls.md (Chinese Simplified) * New translations font_palette.md (Chinese Simplified) * New translations index.md (Chinese Simplified) * New translations multi_device_pattern.md (Chinese Simplified) * New translations fly.md (Chinese Simplified) * New translations setup.md (Chinese Simplified) * New translations geotag_images.md (Korean) * New translations geotag_images.md (Turkish) * New translations geotag_images.md (Chinese Simplified) * New translations index.md (Korean) * New translations index.md (Chinese Simplified) * New translations log_download.md (Korean) * New translations log_download.md (Turkish) * New translations mavlink_console.md (Korean) * New translations mavlink_console.md (Chinese Simplified) * New translations mavlink_inspector.md (Korean) * New translations mavlink_inspector.md (Chinese Simplified) * New translations fly_view.md (Korean) * New translations fly_view.md (Turkish) * New translations fly_view.md (Chinese Simplified) * New translations replay_flight_data.md (Korean) * New translations replay_flight_data.md (Turkish) * New translations replay_flight_data.md (Chinese Simplified) * New translations video_overlay.md (Korean) * New translations video_overlay.md (Turkish) * New translations video_overlay.md (Chinese Simplified) * New translations download_and_install.md (Korean) * New translations download_and_install.md (Turkish) * New translations download_and_install.md (Chinese Simplified) * New translations quick_start.md (Korean) * New translations quick_start.md (Turkish) * New translations quick_start.md (Chinese Simplified) * New translations index.md (Korean) * New translations index.md (Chinese Simplified) * New translations pattern.md (Korean) * New translations pattern.md (Turkish) * New translations pattern.md (Chinese Simplified) * New translations pattern_corridor_scan.md (Korean) * New translations pattern_corridor_scan.md (Turkish) * New translations pattern_corridor_scan.md (Chinese Simplified) * New translations pattern_fixed_wing_landing.md (Korean) * New translations pattern_fixed_wing_landing.md (Turkish) * New translations pattern_fixed_wing_landing.md (Chinese Simplified) * New translations pattern_presets.md (Korean) * New translations pattern_presets.md (Turkish) * New translations pattern_presets.md (Chinese Simplified) * New translations pattern_structure_scan_v2.md (Korean) * New translations pattern_structure_scan_v2.md (Turkish) * New translations pattern_structure_scan_v2.md (Chinese Simplified) * New translations pattern_survey.md (Korean) * New translations pattern_survey.md (Turkish) * New translations pattern_survey.md (Chinese Simplified) * New translations plan_geofence.md (Korean) * New translations plan_geofence.md (Turkish) * New translations plan_geofence.md (Chinese Simplified) * New translations plan_rally_points.md (Korean) * New translations plan_rally_points.md (Turkish) * New translations plan_rally_points.md (Chinese Simplified) * New translations plan_view.md (Korean) * New translations plan_view.md (Turkish) * New translations plan_view.md (Chinese Simplified) * New translations daily_build_new_features.md (Korean) * New translations daily_build_new_features.md (Chinese Simplified) * New translations daily_builds.md (Korean) * New translations daily_builds.md (Chinese Simplified) * New translations index.md (Korean) * New translations privacy_policy.md (Korean) * New translations release_notes.md (Korean) * New translations release_notes.md (Chinese Simplified) * New translations stable_v3.2_long.md (Korean) * New translations stable_v3.2_long.md (Chinese Simplified) * New translations stable_v3.3_long.md (Korean) * New translations stable_v3.3_long.md (Chinese Simplified) * New translations stable_v4.0_additional.md (Korean) * New translations stable_v4.0_additional.md (Chinese Simplified) * New translations console_logging.md (Korean) * New translations console_logging.md (Turkish) * New translations console_logging.md (Chinese Simplified) * New translations csv.md (Korean) * New translations csv.md (Chinese Simplified) * New translations general.md (Korean) * New translations general.md (Turkish) * New translations general.md (Chinese Simplified) * New translations mavlink.md (Korean) * New translations mavlink.md (Chinese Simplified) * New translations offline_maps.md (Turkish) * New translations settings_view.md (Korean) * New translations settings_view.md (Turkish) * New translations virtual_joystick.md (Korean) * New translations virtual_joystick.md (Chinese Simplified) * New translations airframe.md (Korean) * New translations airframe.md (Turkish) * New translations airframe.md (Chinese Simplified) * New translations airframe_ardupilot.md (Korean) * New translations airframe_ardupilot.md (Turkish) * New translations airframe_ardupilot.md (Chinese Simplified) * New translations airframe_px4.md (Korean) * New translations airframe_px4.md (Turkish) * New translations airframe_px4.md (Chinese Simplified) * New translations camera.md (Korean) * New translations camera.md (Turkish) * New translations camera.md (Chinese Simplified) * New translations firmware.md (Korean) * New translations firmware.md (Turkish) * New translations firmware.md (Chinese Simplified) * New translations flight_modes.md (Korean) * New translations flight_modes.md (Turkish) * New translations flight_modes.md (Chinese Simplified) * New translations flight_modes_ardupilot.md (Korean) * New translations flight_modes_ardupilot.md (Turkish) * New translations flight_modes_ardupilot.md (Chinese Simplified) * New translations flight_modes_px4.md (Korean) * New translations flight_modes_px4.md (Turkish) * New translations flight_modes_px4.md (Chinese Simplified) * New translations joystick.md (Korean) * New translations joystick.md (Turkish) * New translations joystick.md (Chinese Simplified) * New translations motors.md (Korean) * New translations motors.md (Turkish) * New translations motors.md (Chinese Simplified) * New translations motors_ardusub.md (Korean) * New translations motors_ardusub.md (Turkish) * New translations motors_ardusub.md (Chinese Simplified) * New translations parameters.md (Korean) * New translations parameters.md (Turkish) * New translations parameters.md (Chinese Simplified) * New translations power.md (Korean) * New translations power.md (Turkish) * New translations power.md (Chinese Simplified) * New translations radio.md (Korean) * New translations radio.md (Turkish) * New translations radio.md (Chinese Simplified) * New translations safety.md (Korean) * New translations safety.md (Chinese Simplified) * New translations safety_ardupilot.md (Korean) * New translations safety_ardupilot.md (Turkish) * New translations safety_ardupilot.md (Chinese Simplified) * New translations sensors.md (Korean) * New translations sensors.md (Turkish) * New translations sensors.md (Chinese Simplified) * New translations sensors_ardupilot.md (Korean) * New translations sensors_ardupilot.md (Turkish) * New translations sensors_ardupilot.md (Chinese Simplified) * New translations sensors_px4.md (Korean) * New translations sensors_px4.md (Turkish) * New translations sensors_px4.md (Chinese Simplified) * New translations setup_view.md (Korean) * New translations setup_view.md (Turkish) * New translations setup_view.md (Chinese Simplified) * New translations tuning.md (Korean) * New translations tuning.md (Chinese Simplified) * New translations tuning_arducopter.md (Korean) * New translations tuning_arducopter.md (Chinese Simplified) * New translations tuning_ardusub.md (Korean) * New translations tuning_ardusub.md (Chinese Simplified) * New translations tuning_px4.md (Korean) * New translations tuning_px4.md (Turkish) * New translations tuning_px4.md (Chinese Simplified) * New translations support.md (Korean) * New translations support.md (Turkish) * New translations support.md (Chinese Simplified) * New translations toolbar.md (Korean) * New translations toolbar.md (Turkish) * New translations toolbar.md (Chinese Simplified) * New translations index.md (Korean) * New translations parameter_download.md (Korean) * New translations parameter_download.md (Chinese Simplified) * New translations qgc_setup.md (Korean) * New translations qgc_setup.md (Turkish) * New translations qgc_setup.md (Chinese Simplified) * New translations qgc_usage.md (Korean) * New translations qgc_usage.md (Turkish) * New translations qgc_usage.md (Chinese Simplified) * New translations resume_mission.md (Korean) * New translations resume_mission.md (Turkish) * New translations resume_mission.md (Chinese Simplified) * New translations vehicle_connection.md (Korean) * New translations vehicle_connection.md (Turkish) * New translations vehicle_connection.md (Chinese Simplified)
1 year ago
# Fly View Customization
The Fly View is designed in such a way that it can be cusomtized in multiple ways from simple to more complex. It is designed in three separate layers each of which are customizable providing different levels of change.
## Layers
- There are three layers to the fly view from top to bottom visually:
- [`FlyView.qml`](https://github.com/mavlink/qgroundcontrol/blob/master/src/FlightDisplay/FlyView.qml) This is the base layer of ui and business logic to control map and video switching.
- [`FlyViewWidgetsOverlay.qml`](https://github.com/mavlink/qgroundcontrol/blob/master/src/FlightDisplay/FlyViewWidgetLayer.qml) This layer includes all the remaining widgets for the fly view.
- [`FlyViewCustomLayer.qml`](https://github.com/mavlink/qgroundcontrol/blob/master/src/FlightDisplay/FlyViewCustomLayer.qml) This is a layer you override using resource override to add your own custom layer.
### Inset Negotiation using `QGCToolInsets`
An important aspect of the Fly View is that it needs to understand how much central space it has in the middle of it's map window which is not obstructed by ui widgets which are at the edges of the window. It uses this information to pan the map when the vehicle goes out of view. This need to be done not only for the window edges but also for the widgets themselve such that the map pans before it goes under a widget.
This is done through the use of the [`QGCToolInsets`](https://github.com/mavlink/qgroundcontrol/blob/master/src/QmlControls/QGCToolInsets.qml) object included in each layer. This objects provides inset information for each window edge informing the system as to how much real estate is taken up by edge based ui. Each layer is given the insets of the layer below it through `parentToolInsets` and then reports back the new insets taking into account the layer below and it's own additions through `toolInsets`. The final results total inset is then given to the map so it can do the right thing. The best way to understand this is to look at both the upstream and custom example code.
### `FlyView.qml`
The base layer for the view is also the most complex from ui interactions and business logic. It includes the main display elements of map and video as well as the guided controls. Although you can resource override this layer it is not recommended. And if you do you better really (really) know what you are doing. The reason it is a separate layer is to make the layer above much simpler and easier to customize.
### `FlyViewWidgetsOverlay.qml`
This layer contains all the remaining controls of the fly view. You have the ability to hide the controls through use of [`QGCFlyViewOptions`](https://github.com/mavlink/qgroundcontrol/blob/master/src/api/QGCOptions.h). But in order to change the layout of the upstream controls you must use a resource override. If you look at the source you'll see that the controls themselves are well encapsulated such that it should not be that difficult to create your own override which repositions them and/or adds your own ui. While maintaining a connection to the upstream implementaions of the controls.
### `FlyViewCustomLayer.qml`
This provides the simplest customization ability to the Fly View. Allowing you the add ui elements which are additive to the existing upstream controls. The upstream code adds no ui elements and is meant to be the basis for your own custom code used as a resource override for this qml. The custom example code provides you with an example of how to do it.
## Recommendations
### Simple customization
The best place to start is using a custom layer override plus turning off ui elements from the widgets layer (if needed). I would recommend trying to stick with only this if at all possible. It provides the greatest abilty to not get screwed by upstream changes in the layers below.
### Moderate complexity customization
If you really need to reposition upstream ui elements then your only choice is overriding `FlyViewWidgetsOverlay.qml`. By doing this you are distancing yourself a bit from upstream changes. Although you will still get changes in the upstream controls for free. If there is a whole new control added to the fly view upstream you won't get it until you add it to your own override.
### Highly complex customization
The last and least recommended customization mechanism is overriding `FlyView.qml`. By doing this you are distancing yourself even further from getting upstream changes for free.