QGroundControl(QGC) 개발자 가이드

- for Ubuntu(Linux) (5/9)

by 연화유심

Part 5. User Interface Design (사용자 인터페이스 디자인)

이 파트에서는 Ubuntu 환경에서 QGroundControl(QGC)의 사용자 인터페이스(UI) 구조를 설명합니다. QGC는 Qt/QML 기반으로 설계되어 있으며, FactSystem 및 전용 UI 컨트롤을 활용합니다. 공식 Developer Guide의 UI 디자인 패턴, 멀티 디바이스 대응, 폰트/팔레트 규칙 등을 반영했습니다.


1) QGC UI의 주요 View

Fly View : 드론 실시간 모니터링 및 제어

part 5 그림 1.jpg Image source: QGroundControl Documentation (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)

Plan View : 지도 기반 경로 계획

part 5 그림 2.jpg Image source: QGroundControl Documentation (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)

Analyze View : 로그 분석, Inspector, 데이터 시각화


part 5 그림 3.jpg
part 5그림 5.jpg
Image source: QGroundControl Documentation (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)

Setup View : 기체 설정, 센서 보정, 펌웨어 업데이트

part 5 그림 4.jpg Image source: QGroundControl Documentation (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)

2) QML 기반 UI 구조

QML은 선언형 UI 언어로, C++ 컨트롤러와 연동

Vehicle 객체의 데이터가 Fact 객체로 노출되고 QML에 바인딩되어 UI 자동 반영

MVC 변형 패턴: QML(View) ↔ C++(Controller) ↔ FactSystem(Model)


3) 멀티 디바이스 대응

QGC는 태블릿 중심 설계지만 동일 코드로 데스크탑/작은 화면 지원

QML 레이아웃 유연성을 활용해 반응형 UI 제공

Ubuntu HiDPI 모니터, 다중 모니터 환경에서도 적응


4) 폰트 및 컬러 팔레트

QGCPalette와 QGCMapPalette를 사용해 색상 지정

직접 색상 지정 금지 → 라이트/다크 모드 호환성 유지

ScreenTools를 통해 해상도와 DPI 기반 자동 폰트 크기 조정


5) QGC 전용 UI 컨트롤

QGCButton, QGCLabel, QGCComboBox: 기본 컨트롤.

DropButton, QGCView, QGCViewDialog, SetupPage: 주요 UI 구성.

표준 QML 대신 QGC 컨트롤을 사용하는 것이 권장됨.


6) FactSystem 활용

Fact 객체는 UI와 데이터 바인딩을 지원

FactMetaData로 유효성 검증, 범위, 단위 자동 처리

FactGroup 확장을 통해 새로운 센서 데이터도 UI 자동 표시


7) Ubuntu 환경 특징

Mesa 드라이버 업데이트 필요

GStreamer 설치 후 Fly View에서 영상 스트리밍 지원

다중 모니터 연결 시 레이아웃 깨짐 → QGC 설정에서 Scaling 조정


작가의 이전글QGroundControl(QGC) 개발자 가이드