이 페이지에서

위젯 튜토리얼

소개

위젯(Widget)은 Qt로 구축된 그래픽 사용자 인터페이스(GUI) 애플리케이션의 기본 구성 요소입니다. 각 GUI 구성 요소(예: 버튼, 레이블, 텍스트 편집기)는 사용자 인터페이스 창 내의 특정 위치에 배치되거나 독립적인 창으로 표시되는 위젯 객체( widget )입니다. 각 위젯 유형은 ` QWidget`의 서브클래스에 의해 제공되며, ` ` 자체는 ` QObject`의 서브클래스입니다.

QWidget 는 추상 클래스가 아닙니다. 이 클래스는 다른 위젯을 담는 컨테이너로 사용될 수 있으며, 최소한의 노력으로 서브클래스를 만들어 새로운 사용자 정의 위젯을 생성할 수 있습니다. QWidget 는 종종 다른 QWidget들을 배치할 수 있는 창을 만드는 데 사용됩니다.

QObject와 마찬가지로, QWidget도 소유권을 나타내기 위해 부모 객체를 지정하여 생성할 수 있으며, 이를 통해 더 이상 사용되지 않는 객체가 확실히 삭제되도록 보장합니다. 위젯의 경우, 이러한 부모-자식 관계에는 추가적인 의미가 있습니다. 즉, 각 자식 위젯은 부모 위젯이 차지하는 화면 영역 내에 표시됩니다. 이는 창 위젯을 삭제하면 그 안에 포함된 모든 자식 위젯도 함께 삭제된다는 것을 의미합니다.

Main 함수 작성

Qt GUI와 함께 제공되는 많은 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를 설치하기 위해 바이너리 패키지를 설치했거나 직접 Qt를 컴파일한 경우, 이 튜토리얼에 설명된 예제는 이미 빌드되어 실행할 준비가 되어 있을 것입니다. 예제를 수정하고 다시 컴파일하려면 다음 단계를 따르십시오.

  1. 명령 프롬프트에서 수정하신 예제가 있는 디렉터리로 이동하십시오.
  2. qmake 을 입력하고 Return 를 누르십시오. 이 방법이 작동하지 않으면 실행 파일이 경로에 포함되어 있는지 확인하거나 전체 경로를 입력하십시오.
  3. Linux/Unix 및 macOS에서는 ` make `를 입력하고 ` Return`를 누르십시오. Visual Studio가 설치된 Windows에서는 ` nmake `를 입력하고 ` Return`를 누르십시오.

현재 디렉터리에 실행 파일이 생성됩니다. Windows에서는 이 파일이 debug 또는 release 하위 디렉터리에 위치할 수 있습니다. 이 실행 파일을 실행하면 예제 코드가 실제로 작동하는 모습을 확인할 수 있습니다.

© 2026 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.