위젯 튜토리얼
소개
위젯은 Qt로 빌드된 그래픽 사용자 인터페이스(GUI) 애플리케이션의 기본 구성 요소입니다. 각 GUI 컴포넌트(예: 버튼, 레이블, 텍스트 편집기)는 사용자 인터페이스 창 내의 어딘가에 배치되거나 독립적인 창으로 표시되는 widget 입니다. 각 유형의 위젯은 QWidget 의 서브클래스에 의해 제공되며, 이 서브클래스는 그 자체로 QObject 의 서브클래스입니다.
QWidget 는 추상 클래스가 아닙니다. 다른 위젯의 컨테이너로 사용할 수 있으며, 최소한의 노력으로 새로운 사용자 정의 위젯을 만들기 위해 서브클래싱할 수 있습니다. QWidget 는 종종 다른 QWidget가 배치되는 창을 만드는 데 사용됩니다.
QObject와 마찬가지로 QWidget는 소유권을 나타내는 부모 객체로 생성하여 더 이상 사용하지 않을 때 객체가 삭제되도록 할 수 있습니다. 위젯의 경우 이러한 부모-자식 관계에는 또 다른 의미가 있습니다. 각 자식 위젯은 부모 위젯이 차지하는 화면 영역 내에 표시됩니다. 즉, 창 위젯을 삭제하면 그 안에 포함된 모든 자식 위젯도 삭제됩니다.
메인 함수 작성하기
Qt와 함께 제공되는 많은 GUI 예제는 애플리케이션을 초기화하는 표준 코드가 포함된 main.cpp
파일과 애플리케이션 로직 및 사용자 정의 GUI 컴포넌트가 포함된 기타 소스/헤더 파일을 포함하는 패턴을 따릅니다.
main.cpp
의 일반적인 main()
함수는 다음과 같습니다:
#include <QtWidgets> // Include header files for application components. // ... int main(int argc, char *argv[]) { QApplication app(argc, argv); // Set up and show widgets. // ... return app.exec(); }
먼저 QApplication 객체가 생성되며, 이 객체는 명령줄에서 전달된 인수를 사용하여 구성할 수 있습니다. 위젯이 생성되어 표시되면 QApplication::exec()가 호출되어 Qt의 이벤트 루프가 시작됩니다. 이 함수가 반환될 때까지 제어권은 Qt로 넘어갑니다. 마지막으로 main()
는 QApplication::exec()가 반환한 값을 반환합니다.
간단한 위젯 예제
이 간단한 위젯 예제는 모두 main()
함수 내에서 작성되었습니다.
실제 위젯 예제
이 고급 예제에서는 위젯과 레이아웃을 생성하는 코드가 다른 파일에 저장됩니다. 예를 들어 메인 창에 대한 GUI는 QMainWindow 서브클래스의 생성자에서 만들 수 있습니다.
예제 빌드하기
Qt를 얻기 위해 바이너리 패키지를 설치했거나 직접 컴파일한 경우 이 튜토리얼에서 설명하는 예제는 이미 빌드되어 실행할 준비가 되어 있을 것입니다. 예제를 수정하고 다시 컴파일하려면 다음 단계를 따르세요:
- 명령 프롬프트에서 수정한 예제가 들어 있는 디렉터리를 입력합니다.
qmake
을 입력하고 Return 을 누릅니다. 그래도 문제가 해결되지 않으면 실행 파일이 경로에 있는지 확인하거나 전체 위치를 입력합니다.- Linux/Unix 및 macOS의 경우
make
을 입력하고 Return 을 누르며, Visual Studio가 설치된 Windows의 경우nmake
을 입력하고 Return 을 누릅니다.
현재 디렉터리에 실행 파일이 생성됩니다. Windows의 경우 이 파일은 debug
또는 release
하위 디렉터리에 있을 수 있습니다. 이 실행 파일을 실행하여 예제 코드가 작동하는지 확인할 수 있습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.