Qt 환경 Form Template

Qt 환경에서 GUI를 만들 경우 QWidget, QDialog, QMainWindow 세 가지 Class 중 하나를 상속받아 새로운 Class를 구현해야 합니다.

또한, Modal 및 Modaless 형식으로 프로그램 실행 중 GUI를 실행하여 프로그램의 흐름을 제어해야 합니다.

 

상속을 받을 경우 QWidget, QDialog, QMainWindow에 대한 각 속성과 사용법을 알고 있다면 상황에 따른 UI 배치가 가능합니다.

우선, Class 형태에 따른 각각의 차이점을 알아보도록 하겠습니다.

 

QWidget, QDialog, QMainWindow 비교

QWidget

- 위젯은 화면에 표시할 수 있는 것을 목적으로 합니다.

- 윈도우나 버튼 모든 위젯 화면에 무엇인가를 표시하거나 키보드 또는 마우스에서 사용자의 입력을 받아들일 것, 

  버튼, 슬라이더, 뷰, 대화상자, 창을 포함한 디스플레이 및 사용자의 상호작용을 나타내는 사각형의 영역입니다.

- "위젯"이라는 단어는 Unix에서 나왔으며 Windows에서는 "컨트롤"이라고 합니다.

 

QDialog

- 특수한 종류의 창으로 보통 일시적입니다. 제목 표시 줄 모양이 다를 수 있습니다.

- 알림 또는 입력과 선택을 위해 사용자에게 제공되며 일반적으로 하단 또는 오른쪽에 확인, 취소 등의 버튼이 존재합니다.

- 대화상자가 항상 별도의 창에 표시되는 최상위 위젯으로 다른 위젯에 삽입할 수 없습니다.

 

QMainWindow

- 최상위 위젯으로 메뉴바, 도구 모음 및 도킹 영역에 대한 상태 표시 줄과 장소를 포함하는 미리 정의된 레이아웃을 가지고 있습니다.

- 창은 부모 / 자식 계층의 상단이며 일반적으로 제목 표시 줄과 테두리가 표시됩니다.

- 기본 윈도우 시스템 (Windows, KDE, GNOME 등)은 제목 표시 줄 / 테두리 스타일, 배치, 포커스 등과 같은 윈도우에 대한 정책을 제공

 

결과적으로 QWidget, QDialog, QMainWindow 세 가지 모두 다 위젯으로 QMainWindow는 최상위 위젯, QDialog는 QMainWindow의 특별한 종류입니다.

 

Modal, Modalless 비교

두 형식은 MainWindow를 제외한 Widget과 Dialog에서 사용하는 실행 형식입니다.

 

Modal

- exec()의 실행 형식으로 독립적입니다.

- 새 Modal 창이 열렸을 경우 기존에 있던 창을 사용하지 못하는 방식입니다.

- 예를 들어 응용 프로그램에서 에러 메세지가 뜬다고 가정하면, 해당 메세지 창에서 확인 혹은 취소 버튼을 선택해야만 다음으로진행이 가능하고 메세지가 뜬 상태라면 다른 창을 선택할 수 없습니다.

- 중요한 메세지를 표시하는 Dialog는 거의 Modal 창을 이용합니다.

 

Modaless

- show()의 실행 형식으로 독립적이지 않습니다.

- 어느 하나의 Dialog 창이 있어도 프로그램 제어권을 독점하지 않으므로 다른 작업이 가능합니다.

- 사용자가 순서에 관계없이 Access 가능하기 때문에 사용자의 동작에 관계없이 응용 프로그램의 상태를 일관성있게 유지해야 하므로 구현하기가 조금 더 어렵습니다.

- 자주 사용하는 정보를 표시하는데 사용합니다.