본문으로 이동

Qt 도킹 UI

Conaonda Wiki

Qt 도킹 UI는 도구 창, 편집기, 속성 패널, 로그 창 같은 여러 작업 패널을 사용자가 탭으로 묶고, 분할하고, 떼어 내고, 다시 결합할 수 있게 만든 Qt 데스크톱 사용자 인터페이스 패턴이다. 이 문서는 공개 C++ 라이브러리 Qt Advanced Docking System(ADS)을 중심 사례로 다룬다.

개요

복잡한 데스크톱 응용프로그램은 하나의 고정 화면보다 작업에 따라 바꿀 수 있는 작업공간이 필요하다. 영상 분석자는 지도와 영상, 히스토그램, 레이어, 메타데이터를 동시에 보고 싶을 수 있고, 3D 편집자는 뷰포트, 장면 트리, 속성, 콘솔을 서로 다른 모니터에 배치할 수 있다. 도킹 UI는 각 기능을 독립 패널로 만들고 사용자의 화면 크기와 역할에 맞춰 재구성하게 한다.

Qt 자체에도 QDockWidget이 있지만 ADS는 Visual Studio와 같은 IDE에 가까운 도킹 경험을 목표로 한다. 2026년 8월 16일 확인한 공개 저장소 README는 메인 창의 모든 경계와 각 도크 영역에 도킹, 부동 창 내부에 다시 도킹, 탭 그룹 전체 이동, 레이아웃 관점(perspective) 저장, 자동 숨김, 취소 가능한 드래그, 동적 도크 삭제를 지원한다고 설명한다. Qt 5와 Qt 6을 지원하고 PyQt5·PyQt6·PySide6용 파이썬 바인딩도 안내한다.

README의 최신 주요 항목은 릴리스 5.0으로, 전체 다크 모드와 네이티브 Wayland 도킹 지원을 강조한다. 저장소는 LGPL-2.1 라이선스로 공개되어 있다. 실제 제품에 포함할 때에는 동적·정적 링크 방식, 수정한 라이브러리의 제공 의무 등 LGPL 조건을 프로젝트 배포 구조와 함께 검토해야 한다.

핵심 구조/작동 방식

ADS의 중심은 CDockManager이다. QMainWindow에 관리자를 만들고, 응용프로그램별 QWidgetCDockWidget의 내용으로 넣은 뒤 원하는 도킹 영역에 추가한다. CDockAreaWidget은 여러 도크 위젯을 탭으로 묶는 영역이고, 분할 경계에는 Qt의 QSplitter가 사용된다. 부동 컨테이너도 도크 영역을 가질 수 있어 메인 창과 유사한 방식으로 패널을 다시 분할하거나 탭으로 결합한다.

기본 동작은 다음과 같다.

  1. 응용프로그램이 패널의 제목, 내용 위젯, 닫기·삭제 정책, 허용 영역을 구성한다.
  2. 사용자가 탭이나 제목 표시줄을 끌면 시스템은 즉시 원래 패널을 제거하지 않고 드래그 미리보기와 놓기 오버레이를 표시한다.
  3. 마우스를 놓을 때 선택된 영역에 실제 레이아웃 변경을 적용한다. 놓기 전에는 Escape 키로 취소할 수 있다.
  4. 같은 영역의 탭은 하나의 그룹으로 이동할 수 있고, 화면 가장자리의 사이드바에 고정하면 자동 숨김 패널이 된다.
  5. 현재 도크 집합과 배치를 직렬화해 저장하고 복원할 수 있다. 이름 붙인 perspective를 여러 개 두면 분석, 편집, 검토 같은 작업 모드 사이를 빠르게 전환할 수 있다.

분할기 크기 변경은 불투명 방식과 지연 방식 중 고를 수 있다. 불투명 방식은 드래그 중 내용을 계속 다시 그려 즉각적이지만, 무거운 OpenGL·영상 위젯에서는 깜박임이나 부하가 생길 수 있다. 지연 방식은 마우스를 놓을 때 최종 크기를 적용한다. 표시·숨김 명령은 각 도크의 toggleViewAction()을 메뉴나 도구 모음에 연결하는 방식으로 제공할 수 있다.

활용

도킹 UI는 IDE, GIS, 원격탐사 영상 분석기, 과학 시각화, 산업 검사, 디버거, 3D 저작 도구처럼 기능 패널이 많은 응용프로그램에 적합하다. COG 웹 가시화 기능을 데스크톱 셸에 포함한다면 지도, 밴드 조정, 좌표, 다운로드 상태를 별도 도크로 나눌 수 있다. 고충실도 3D 시뮬레이션 저작 환경에서는 뷰포트, 엔티티 트리, 물리 속성, 성능 프로파일러를 역할별 perspective로 구성할 수 있다.

고정된 하나의 배치를 모든 사용자에게 강요하지 않는다는 점도 장점이다. 단일 모니터에서는 자동 숨김으로 공간을 확보하고, 다중 모니터에서는 부동 창을 분리할 수 있다. 저장된 작업공간을 사용자 설정 또는 프로젝트 설정으로 관리하면 특정 검토 절차를 재현하기 쉬워진다.

한계 및 주의점

자유도가 높을수록 사용자가 패널을 잃어버리거나 지나치게 복잡한 배치를 만들 수 있다. 기본 배치 복원, 필수 패널 표시 메뉴, 레이아웃 버전 관리와 손상 시 대체값이 필요하다. 모든 패널을 도킹 가능하게 만드는 것도 바람직하지 않다. 짧은 확인 대화상자나 단일 작업 흐름은 고정 레이아웃이 더 명확할 수 있다.

운영체제의 창 시스템 차이도 중요하다. 공식 README에 따르면 Wayland는 클라이언트가 최상위 창의 화면 좌표를 직접 정하거나 전역 커서 위치를 조회하는 것을 제한한다. Qt 6.6.3부터 관련 도킹을 지원하지만, 부동 창 장식, 드래그 방식, 항상 위 동작, 저장 위치 복원은 Windows·X11과 다를 수 있다. macOS는 컴파일 가능하다고 보고되었으나 프로젝트 작성자가 직접 충분히 시험한 환경은 아니라고 명시한다.

무거운 렌더링 위젯을 이동·리사이즈하면 GPU 컨텍스트, 고해상도 화면 배율, 포커스, 키보드 단축키 문제가 나타날 수 있다. 대상 OS와 다중 모니터, 화면 배율, 절전·복귀, 레이아웃 업그레이드를 실제 장비에서 시험해야 한다. 또한 ADS가 지원하는 Qt 버전과 Python 패키지의 배포 주기는 같지 않을 수 있으므로 각 바인딩의 버전 호환성을 별도로 확인한다.

함께 보기

출처