QMainWindow, QWidget 및 QDialog의 차이점은 무엇입니까?


답변:


130

A QWidget는 Qt의 모든 드로어 블 클래스의 기본 클래스입니다. 모든 QWidget기반 클래스는 부모가 없을 때 표시하여 창으로 표시 할 수 있습니다.

A QDialog는를 기반으로 QWidget하지만 창으로 표시되도록 설계되었습니다. 항상 창에 나타나며 대화 상자의 공통 버튼 (수락, 거부 등)과 잘 작동하도록하는 기능이 있습니다.

QMainWindow메인 윈도우에 필요한 일반적인 요구 사항을 중심으로 설계되었습니다. 메뉴 모음, 상태 표시 줄, 도구 모음 및 기타 위젯에 대한 미리 정의 된 위치가 있습니다. 같은 버튼에 대한 기본 제공 허용이 없습니다 QDialog.


1
이 질문을 검색했지만 그게 제가 기다리던 답이 아닙니다. QtDesigner에서 QMainWindow를 사용하면 메뉴 모음과 상태 표시 줄이 제공됩니다. 코드를 직접 작성하고 QMainWindow를 사용하면 이런 것이 없습니다. 또는 window.addToolBar ( "Toolbar"); 다른 골칫거리없이 미리 정의 된 장소에 배치할까요?
Lilian A. Moraru

1
@MoraruLilian : 저는 실제로 QMainWindow를 사용하지 않기 때문에 세부 사항을 모릅니다. 내 대답에서 말했듯이, 장소가 있다는 것을 알고 있으므로 코드에서 수행하는 것이 당신이 진술하는 것처럼 간단 할 수 있습니다.
Caleb Huitt-cjhuitt

8
@Caleb_Huitt 내가 말하는 것을한다. 그게 당신이하려는 말인지 확인하고 싶었습니다. 어쨌든 QMainWindow 대신 항상 QWidget을 사용하는 것이 좋습니다. 예를 들어 다른 레이아웃 설정과 같은 문제가 발생할 수 있습니다. QMainWindow에서 새 레이아웃을 설정하려면 QWidget을 만들고 QMainWin의 중앙 위젯으로 설정해야하며 QWidget에서 setLayout (QLayout *)을 사용할 수 있습니다. QWidget을 사용하는 것만으로도 추가적인 두통을 피할 수 있습니다. 물론, QMainWindow는 ToolBar 및 StatusBar의 쉬운 설정을 제공하지만 QWidget에서 직접 설정할 수 있습니다.
Lilian A. Moraru 2011

2
우리가 사용하고자하는 이유 중 하나는 QMainWindow대신 기본 클래스의는 QWidgetQMainWindowQDockWidget반면 지원을 QWidget혼자하지 않습니다
ComradeJoecool

2
@ mLstudent33 문서화에 대한 좋은 질문처럼 들리며, 도움이되지 않는 경우 여기에 의견보다는 기본 질문으로 질문하는 것이 좋습니다. 한 가지 예 (Qt5 용)는 doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html
Caleb Huitt-cjhuitt

4

QWidget : QtWidgets 모듈의 다른 모든 GUI 요소에 대한 기본 클래스입니다. 자체적으로 창을 구성하거나 QLayout의 일부이거나 부모-자식 계층의 구성원 일 수 있습니다.

QDialog : 일반적으로 사용되는-놀라움! -사용자 입력이 필요한 경우 임시 대화 상자를 표시합니다.

QMainWindow : 응용 프로그램의 기본 창으로 사용할 수있는 편의 클래스입니다. 몇 가지 멋진 기능이 내장되어 있습니다 : 상태 표시 줄, 도구 모음 및 메뉴 표시 줄

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.