이 페이지에서

애플리케이션 메인 창

메인 창 클래스 개요

이 클래스들은 메인 창 자체, 메뉴 및 도구 모음, 상태 표시줄 등 일반적인 최신 메인 애플리케이션 창에 필요한 모든 기능을 제공합니다.

QDockWidget

QMainWindow 내에 도킹하거나 데스크톱에서 최상위 창으로 떠 있게 할 수 있는 위젯

QMainWindow

애플리케이션 메인 창

QMdiArea

MDI 창이 표시되는 영역

QMdiSubWindow

QMdiArea용 서브윈도우 클래스

QMenu

메뉴 바, 컨텍스트 메뉴 및 기타 팝업 메뉴에 사용되는 메뉴 위젯

QMenuBar

가로 메뉴 바

QSizeGrip

최상위 창의 크기를 조정하기 위한 크기 조정 핸들

QStatusBar

상태 정보를 표시하는 데 적합한 가로 막대

QToolBar

일련의 컨트롤을 포함하는 이동 가능한 패널

QWidgetAction

툴바와 같은 액션 기반 컨테이너에 사용자 정의 위젯을 삽입하기 위한 인터페이스를 통해 QAction을 확장합니다

메인 윈도우 클래스

Qt는 메인 윈도우 및 관련 사용자 인터페이스 구성 요소를 관리하기 위해 다음과 같은 클래스를 제공합니다:

  • QMainWindow 는 애플리케이션을 구축하는 데 핵심이 되는 클래스입니다. 관련 클래스인 ` QDockWidget ` 및 ` QToolBar `와 함께, 이 클래스는 애플리케이션의 최상위 사용자 인터페이스를 나타냅니다.
  • QDockWidget 는 분리 가능한 도구 팔레트나 보조 창을 만드는 데 사용할 수 있는 위젯을 제공합니다. 도크 위젯은 자체 속성을 관리하며, 이동하거나 닫을 수 있고, 외부 창으로 떠 있게 할 수도 있습니다.
  • QToolBar 버튼, 드롭다운 메뉴, 콤보박스, 스핀박스 등 다양한 동작 관련 위젯을 포함할 수 있는 범용 툴바 위젯을 제공합니다. Qt에서 통일된 동작 모델을 중시한다는 점은 툴바가 메뉴 및 키보드 단축키와 원활하게 연동된다는 것을 의미합니다.

예제 코드

QMainWindow 의 사용법은 간단합니다. 일반적으로 QMainWindow 를 상속받은 클래스를 생성하고, QMainWindow 생성자 내에서 메뉴, 툴바 및 도크 위젯을 설정합니다.

메인 창에 메뉴 바를 추가하려면 메뉴를 생성한 후, 이를 메인 창의 메뉴 바에 추가하면 됩니다. QMainWindow::menuBar() 함수는 처음 호출될 때 자동으로 메뉴 바를 생성한다는 점에 유의하십시오. 또한 QMainWindow::setMenuBar()를 호출하여 메인 창에서 사용자 정의 메뉴 바를 사용할 수도 있습니다.

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ...
    newAct = new QAction(QIcon::fromTheme(QIcon::ThemeIcon::DocumentNew),
                         tr("&New"), this);
    newAct->setShortcuts(QKeySequence::New);
    newAct->setStatusTip(tr("Create a new file"));
    connect(newAct, &QAction::triggered, this, &MainWindow::newFile);

    openAct = new QAction(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen),
                          tr("&Open..."), this);
    openAct->setShortcuts(QKeySequence::Open);
    openAct->setStatusTip(tr("Open an existing file"));
    connect(openAct, &QAction::triggered, this, &MainWindow::open);
    ...

액션이 생성되면 이를 메인 윈도우 구성 요소에 추가할 수 있습니다. 우선 팝업 메뉴에 추가해 보겠습니다.

    fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(newAct);
    fileMenu->addAction(openAct);
    ...
    fileMenu->addSeparator();
    ...

QToolBar 및 QMenu 클래스는 Qt의 액션 시스템을 사용하여 일관된 API를 제공합니다. 위 코드에서는 QMenu::addAction() 함수를 사용하여 파일 메뉴에 기존 액션 몇 가지를 추가했습니다. QToolBar 도 이 함수를 제공하므로 메인 창의 여러 부분에서 액션을 쉽게 재사용할 수 있습니다. 이를 통해 불필요한 중복 작업을 방지할 수 있습니다.

메인 창의 자식 요소로 툴바를 생성하고, 원하는 액션을 툴바에 추가합니다:

fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);
fileToolBar->addAction(openAct);
    ...
fileToolbar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
addToolBar(Qt::TopToolBarArea, fileToolbar);

이 예제에서 툴바는 메인 창의 상단 및 하단 툴바 영역으로 제한되며, 처음에는 상단 툴바 영역에 배치됩니다. newAct 및 openAct 로 지정된 액션이 툴바와 파일 메뉴 모두에 표시되는 것을 확인할 수 있습니다.

QDockWidget QToolBar 와 유사한 방식으로 사용됩니다. 메인 창의 자식 요소로 도크 위젯을 생성하고, 도크 위젯의 자식 요소로 위젯을 추가합니다:

contentsWindow = new QDockWidget(tr("Table of Contents"), this);
contentsWindow->setAllowedAreas(Qt::LeftDockWidgetArea
                              | Qt::RightDockWidgetArea);
addDockWidget(Qt::LeftDockWidgetArea, contentsWindow);

headingList = new QListWidget(contentsWindow);
contentsWindow->setWidget(headingList);

이 예제에서 도크 위젯은 왼쪽 및 오른쪽 도크 영역에만 배치할 수 있으며, 초기에는 왼쪽 도크 영역에 배치됩니다.

QMainWindow API를 사용하면 도크 위젯 영역의 네 모서리를 차지할 도크 위젯 영역을 사용자 정의할 수 있습니다. 필요한 경우 QMainWindow::setCorner() 함수를 사용하여 기본값을 변경할 수 있습니다:

setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);

다음 다이어그램은 위 코드로 생성된 구성을 보여줍니다. 이 레이아웃에서 왼쪽 및 오른쪽 도크 위젯이 메인 창의 상단 및 하단 모서리를 차지한다는 점에 유의하십시오.

중앙 위젯을 기준으로 한 도크 창 배치

모든 메인 창 구성 요소가 설정되면, 다음과 유사한 코드를 사용하여 중앙 위젯을 생성하고 설치합니다:

QWidget *centralWidget = new QWidget(this);
setCentralWidget(centralWidget);

중앙 위젯은 ` QWidget`의 하위 클래스라면 무엇이든 될 수 있습니다.

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