본문 바로가기
IT/파이썬(Python)

PyQt5 클래스 QMainWindow, QDialog, QWidget 차이점

by 깡타의 컴맹인생 2023. 1. 11.
반응형

pyqt5 qmainwindow

목차
1. UI 구성 요소
   1.1. Widget
   1.2. Window

2. Qt 클래스
   2.1. QMainWindow
   2.2. QDialog
   2.3. QWidget

1. UI 구성 요소

Qt의 클래스를 구분하기 전에 위젯(Widget)과 창(Window)의 개념을 미리 알아보자.

 

 1.1. Widget

사용자 인터페이스를 구성하기 위한 기본 요소다. 데이터 및 상태를 표시하거나 사용자의 입력을 수신받거나 다른 위젯을 포함할 수 있다.

 

 1.2. Window

부모 위젯에 포함되지 않은 위젯을 창(Window)이라고 한다. 이것도 위젯이다. 일반적으로 프레임과 제목 표시줄이 존재하나 그런 것들 없이도 창을 만들 수 있다. 프로그램에서 창은 사용자 인터페이스가 구축되는 공간을 제공한다.


2. Qt 클래스

3가지 모두 위젯이라는 점은 동일하다.

 

 2.1. QMainWindow

부모 위젯에 포함되지 않고 기본적으로 메뉴 막대와 상태 표시줄이 존재하는 최상위 위젯이다. QMainWindow의 내부는 QWidget으로 채워질 수 있다. 생성 시 centralwidget이 자동으로 배치되는데 이것 없이 구성될 수 없다.

ex) 프로그램 초기 화면

 

 2.2. QDialog

항상 별도의 창에 표시되는 최상위 위젯이다. 사용자에게 옵션과 선택사항을 제공하는 보조 창으로 사용된다. 다른 위젯에 넣을 수 없다. 보통 사용자로부터 응답을 수집하는 데 사용된다. 객체 탐색기에는 QDialog 클래스로 나타난다.

ex) '예', '아니요' 버튼을 가진 대화 상자

 

 2.3. QWidget

Qt에 있는 모든 사용자 인터페이스 객체의 기본 클래스. 모든  QWidget 기반 클래스는 부모 위젯이 없다면 창(Window)으로 표시할 수 있다. QDialog는 QWidget을 기반으로 하지만 창으로 표시된다.

ex) Window의 내부 위젯, Window

반응형