Qt의 Model View
이 글에서는 PyQt6를 통해 Qt의 Model View 디자인 패턴을 적용하는 방법을 다룬다.
PyQt 정보
- 1. PyQt6을 이용하여 파이썬으로 GUI 어플리케이션 만들기
- 2. PyQt6 Signals, Slots & Events
- 3. Qt6 Widgets
- 4. PyQt6 Layouts
- 5. PyQt6 + Qt Designer
- 6. Qt의 Model View
- 7. PyQt6의 MultiThreading
Model View
Qt에서 모델은 저장된 데이터와 ViewController 사이의 인터페이스 역할을 한다. 모델은 데이터를 저장 및 참조하고, 이 데이터를 API를 통해 표현하여 View에서 접근할 수 있도록 한다.
모델이 채택하는 자료구조나 구현 방식은 사용자에게 달렸다.
베이스 모델 기반 구현
Qt에서는 다양한 종류의 베이스 모델을 기본 제공한다. 파이썬에서는 이러한 베이스 모델을 상속하여 유니크한 부분만 수정함으로써 간편하게 이용 가능하다.
Roles
Qt에서 제공하는 role
은 view가 요청하는 데이터의 유형(타입)을 가리킨다. .data()
메소드는 요청의 유형에 따라 적절히 다른 값을 반환한다.
모델을 사용한 위젯은 해당 위젯 오브젝트의 .setModel()
메소드로 사용 모델 객체를 지정해줄 수 있다.
모델의 변경 사항을 View에 반영하기 위해서는 모델의 .layoutChanged
시그널의 .emit()
메소드를 호출함으로써 모델 시그널을 발생시켜 주면 된다.