이 페이지에서

QMdiArea Class

QMdiArea 위젯은 MDI 창이 표시되는 영역을 제공합니다. 더 보기...

헤더: #include <QMdiArea>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QAbstractScrollArea

공개 유형

enum AreaOption { DontMaximizeSubWindowOnActivation }
flags AreaOptions
enum ViewMode { SubWindowView, TabbedView }
enum WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder }

속성

공개 함수

QMdiArea(QWidget *parent = nullptr)
virtual ~QMdiArea()
QMdiArea::WindowOrder activationOrder() const
QMdiSubWindow *activeSubWindow() const
QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
QBrush background() const
QMdiSubWindow *currentSubWindow() const
bool documentMode() const
void removeSubWindow(QWidget *widget)
void setActivationOrder(QMdiArea::WindowOrder order)
void setBackground(const QBrush &background)
void setDocumentMode(bool enabled)
void setOption(QMdiArea::AreaOption option, bool on = true)
void setTabPosition(QTabWidget::TabPosition position)
void setTabShape(QTabWidget::TabShape shape)
void setTabsClosable(bool closable)
void setTabsMovable(bool movable)
void setViewMode(QMdiArea::ViewMode mode)
QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
QTabWidget::TabPosition tabPosition() const
QTabWidget::TabShape tabShape() const
bool tabsClosable() const
bool tabsMovable() const
bool testOption(QMdiArea::AreaOption option) const
QMdiArea::ViewMode viewMode() const

재구현된 공용 함수

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

공개 슬롯

신호

void subWindowActivated(QMdiSubWindow *window)

재구현된 보호 함수

virtual void childEvent(QChildEvent *childEvent) override
virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *object, QEvent *event) override
virtual void paintEvent(QPaintEvent *paintEvent) override
virtual void resizeEvent(QResizeEvent *resizeEvent) override
virtual void scrollContentsBy(int dx, int dy) override
virtual void showEvent(QShowEvent *showEvent) override
virtual void timerEvent(QTimerEvent *timerEvent) override
virtual bool viewportEvent(QEvent *event) override

보호 슬롯

virtual void setupViewport(QWidget *viewport) override

상세 설명

QMdiArea는 본질적으로 MDI 창을 위한 창 관리자 역할을 합니다. 예를 들어, 이 클래스는 관리하는 창들을 자체적으로 그리며, 캐스케이드 또는 타일 패턴으로 배열합니다. QMdiArea는 일반적으로 MDI 애플리케이션을 생성하기 위해 QMainWindow 의 중심 위젯으로 사용되지만, 어떤 레이아웃에도 배치할 수 있습니다. 다음 코드는 메인 윈도우에 영역을 추가합니다:

QMainWindow *mainWindow = new QMainWindow;
mainWindow->setCentralWidget(mdiArea);

최상위 창용 창 관리자와는 달리, 현재 위젯 스타일이 지원하는 한 QMdiArea는 모든 창 플래그(Qt::WindowFlags)를 지원합니다.

QMdiArea 내의 하위 창들은 QMdiSubWindow 의 인스턴스입니다. 이들은 addSubWindow()를 통해 MDI 영역에 추가됩니다. 일반적으로 내부 위젯으로 설정된 QWidget 를 이 함수에 전달하는 것이 일반적이지만, QMdiSubWindow 를 직접 전달하는 것도 가능합니다. 이 클래스는 ` QWidget`을 상속받으며, 프로그래밍 시 일반 최상위 창과 동일한 API를 사용할 수 있습니다. ` QMdiSubWindow `에는 MDI 창에 특화된 동작도 있습니다. 자세한 내용은 ` QMdiSubWindow ` 클래스 설명을 참조하십시오.

자식 창은 키보드 포커스를 받거나 ` setFocus()`가 호출될 때 활성 상태가 됩니다. 사용자는 일반적인 방법으로 포커스를 이동하여 창을 활성화합니다. MDI 영역은 활성 창이 변경될 때 ` subWindowActivated()` 신호를 발생시키며, ` activeSubWindow()` 함수는 활성 자식 창을 반환합니다.

편의 함수인 subWindowList()는 모든 하위 창 목록을 반환합니다. 이 정보는 예를 들어 창 목록이 포함된 팝업 메뉴에서 사용될 수 있습니다.

자식 창들은 현재 WindowOrder 에 따라 정렬됩니다. 이 정렬 순서는 subWindowList(), activateNextSubWindow() 및 activatePreviousSubWindow()에서 사용됩니다. 또한, cascadeSubWindows() 및 tileSubWindows()을 사용하여 창을 계단식 배열이나 타일 배열로 배치할 때도 사용됩니다.

QMdiArea는 하위 창을 위한 두 가지 내장 레이아웃 전략, 즉 cascadeSubWindows()과 tileSubWindows()을 제공합니다. 둘 다 슬롯이며 메뉴 항목에 쉽게 연결할 수 있습니다.

계단식 배열로 정렬된 MDI 창타일링 패턴으로 배열된 MDI 창

참고: QMdiArea의 기본 스크롤바속성은 Qt::ScrollBarAlwaysOff 입니다.

QMdiSubWindow도 참조하십시오 .

멤버 유형 문서

enum QMdiArea::AreaOption
flags QMdiArea::AreaOptions

이 열거형은 QMdiArea 의 동작을 사용자 정의하는 옵션을 설명합니다.

상수상수명설명
QMdiArea::DontMaximizeSubWindowOnActivation0x1활성화된 하위 창이 최대화되면, 다음으로 활성화되는 하위 창도 최대화되는 것이 기본 동작입니다. 이 동작을 원하지 않는 경우 이 옵션을 설정하십시오.

AreaOptions 유형은 QFlags<AreaOption>에 대한 typedef입니다. 이 유형은 AreaOption 값들의 OR 조합을 저장합니다.

enum QMdiArea::ViewMode

이 열거형은 영역의 보기 모드, 즉 하위 창이 어떻게 표시될지를 설명합니다.

상수값설명
QMdiArea::SubWindowView0하위 창을 창 테두리와 함께 표시합니다(기본값).
QMdiArea::TabbedView1탭 막대에 탭과 함께 하위 창을 표시합니다.

setViewMode()도 참조하십시오 .

enum QMdiArea::WindowOrder

subWindowList() 함수가 반환하는 자식 창 목록의 정렬에 사용할 기준을 지정합니다. cascadeSubWindows() 및 tileSubWindows() 함수는 창을 정렬할 때 이 순서를 따릅니다.

상수값설명
QMdiArea::CreationOrder0창은 생성된 순서대로 반환됩니다.
QMdiArea::StackingOrder1창들은 스택에 쌓인 순서대로 반환되며, 가장 위에 있는 창이 목록의 마지막에 위치합니다.
QMdiArea::ActivationHistoryOrder2창은 활성화된 순서대로 반환됩니다.

subWindowList()도 참조하십시오 .

속성 설명서

activationOrder : WindowOrder

이 속성은 하위 창 목록의 정렬 기준을 저장합니다.

이 속성은 ` subWindowList()` 함수가 반환하는 하위 창 목록의 정렬 기준을 지정합니다. 기본값은 창 생성 순서입니다.

관련 함수:

QMdiArea::WindowOrder activationOrder() const
void setActivationOrder(QMdiArea::WindowOrder order)

subWindowList()도 참조하십시오 .

background : QBrush

이 속성은 작업 영역의 배경 브러시를 지정합니다.

이 속성은 작업 공간 영역 자체의 배경 브러시를 설정합니다. 기본적으로 회색이지만, 어떤 브러시(예: 색상, 그라데이션 또는 픽스맵)라도 사용할 수 있습니다.

액세스 함수:

QBrush background() const
void setBackground(const QBrush &background)

documentMode : bool

이 속성은 탭 뷰 모드에서 탭 바가 문서 모드로 설정되어 있는지 여부를 나타냅니다.

문서 모드는 기본적으로 비활성화되어 있습니다.

액세스 함수:

bool documentMode() const
void setDocumentMode(bool enabled)

QTabBar::documentMode 및 setViewMode()도 참조하십시오 .

tabPosition : QTabWidget::TabPosition

이 속성은 탭형 보기 모드에서 탭의 위치를 지정합니다.

이 속성의 가능한 값은 ` QTabWidget::TabPosition ` 열거형에 정의되어 있습니다.

액세스 함수:

QTabWidget::TabPosition tabPosition() const
void setTabPosition(QTabWidget::TabPosition position)

QTabWidget::TabPosition 및 setViewMode()도 참조하십시오 .

tabShape : QTabWidget::TabShape

이 속성은 탭 보기 모드에서 탭의 모양을 지정합니다.

이 속성의 가능한 값은 ` QTabWidget::Rounded `(기본값) 또는 ` QTabWidget::Triangular`입니다.

액세스 함수:

QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape shape)

QTabWidget::TabShape 및 setViewMode()도 참조하십시오 .

tabsClosable : bool

이 속성은 탭 보기 모드에서 탭 바에 각 탭마다 닫기 버튼을 표시할지 여부를 결정합니다.

기본적으로 탭은 닫을 수 없습니다.

액세스 함수:

bool tabsClosable() const
void setTabsClosable(bool closable)

QTabBar::tabsClosable 및 setViewMode()도 참조하십시오 .

tabsMovable : bool

이 속성은 탭 보기 모드에서 사용자가 탭바 영역 내에서 탭을 이동할 수 있는지 여부를 나타냅니다.

기본적으로 탭은 이동할 수 없습니다.

액세스 함수:

bool tabsMovable() const
void setTabsMovable(bool movable)

QTabBar::movable 및 setViewMode()도 참조하십시오 .

viewMode : ViewMode

이 속성은 ‘ QMdiArea ’에서 하위 창이 표시되는 방식을 지정합니다.

기본적으로 SubWindowView 는 하위 창을 표시하는 데 사용됩니다.

액세스 함수:

QMdiArea::ViewMode viewMode() const
void setViewMode(QMdiArea::ViewMode mode)

관련 항목: ViewMode, setTabShape() 및 setTabPosition().

멤버 함수 설명서

QMdiArea::QMdiArea(QWidget *parent = nullptr)

빈 MDI 영역을 생성합니다. ` parent `는 ` QWidget`의 생성자에 전달됩니다.

[virtual noexcept] QMdiArea::~QMdiArea()

MDI 영역을 삭제합니다.

[slot] void QMdiArea::activateNextSubWindow()

자식 창 목록에 있는 다른 창에 키보드 포커스를 이동합니다. 활성화된 창은 현재 activation order 에 따라 결정된 다음 창이 됩니다.

activatePreviousSubWindow() 및 QMdiArea::WindowOrder도 참조하십시오 .

[slot] void QMdiArea::activatePreviousSubWindow()

자식 창 목록에 있는 다른 창에 키보드 포커스를 넘깁니다. 활성화된 창은 현재 activation order 에 의해 결정된 바로 이전 창이 됩니다.

activateNextSubWindow() 및 QMdiArea::WindowOrder도 참조하십시오 .

QMdiSubWindow *QMdiArea::activeSubWindow() const

현재 활성화된 하위 창에 대한 포인터를 반환합니다. 현재 활성화된 창이 없는 경우, ` nullptr `가 반환됩니다.

서브윈도는 윈도우 상태 측면에서 최상위 윈도우로 취급됩니다. 즉, MDI 영역 외부의 위젯이 활성 윈도우인 경우, 어떤 서브윈도도 활성 상태가 되지 않습니다. MDI 영역이 포함된 윈도우 내의 위젯이 포커스를 얻으면 해당 윈도우가 활성화된다는 점에 유의하십시오.

setActiveSubWindow() 및 Qt::WindowState도 참조하십시오 .

QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

MDI 영역에 ‘ widget ’을 새로운 하위 창으로 추가합니다. ‘ windowFlags ’ 값이 0이 아닌 경우, 위젯에 설정된 플래그보다 우선 적용됩니다.

widget 는 QMdiSubWindow 이거나 다른 QWidget 일 수 있습니다(이 경우 MDI 영역은 하위 창을 생성하고 widget 을 내부 위젯으로 설정합니다).

참고: 하위 창이추가되면 , 해당 창의 부모는 ` QMdiArea`의 뷰포트 위젯 이 됩니다.

QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);

QMdiSubWindow *subWindow2 =
    mdiArea.addSubWindow(internalWidget2);

사용자 정의 하위 창을 생성할 때, MDI 영역에서 창을 닫으면 해당 창이 삭제되도록 하려면 Qt::WA_DeleteOnClose 위젯 속성을 설정해야 합니다. 그렇지 않으면 창이 숨겨질 뿐이며, MDI 영역은 다음 하위 창을 활성화하지 않습니다.

MDI 영역에 추가된 ` QMdiSubWindow `를 반환합니다.

removeSubWindow()도 참조하십시오 .

[slot] void QMdiArea::cascadeSubWindows()

모든 자식 창을 계단식 배열로 정렬합니다.

tileSubWindows()도 참조하십시오 .

[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)

QObject::childEvent(QChildEvent *event)를 재구현합니다.

[slot] void QMdiArea::closeActiveSubWindow()

활성화된 하위 창을 닫습니다.

closeAllSubWindows()도 참조하십시오 .

[slot] void QMdiArea::closeAllSubWindows()

각 창에 ` QCloseEvent `을 전송하여 모든 하위 창을 닫습니다. 하위 창이 닫히기 전에 해당 하위 창으로부터 ` subWindowActivated()` 신호를 수신할 수 있습니다(다른 하위 창이 닫힐 때 MDI 영역이 해당 하위 창을 활성화하는 경우).

닫기 이벤트를 무시하는 하위 창은 계속 열려 있습니다.

closeActiveSubWindow()도 참조하십시오 .

QMdiSubWindow *QMdiArea::currentSubWindow() const

현재 하위 창의 포인터를 반환하며, 현재 하위 창이 없는 경우 ` nullptr `를 반환합니다.

QMdiArea 를 포함하는 QApplication 가 활성화된 경우, 이 함수는 activeSubWindow()과 동일한 결과를 반환합니다.

activeSubWindow() 및 QApplication::activeWindow()도 참조하십시오 .

[override virtual protected] bool QMdiArea::event(QEvent *event)

QAbstractScrollArea::event(QEvent *event)를 재구현합니다.

[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)

QObject::eventFilter(QObject *watched, QEvent *event)를 재구현합니다.

[override virtual] QSize QMdiArea::minimumSizeHint() const

QAbstractScrollArea::minimumSizeHint() const를 재구현합니다.

[override virtual protected] void QMdiArea::paintEvent(QPaintEvent *paintEvent)

QAbstractScrollArea::paintEvent(QPaintEvent *event)를 재구현합니다.

void QMdiArea::removeSubWindow(QWidget *widget)

MDI 영역에서 ` widget `를 제거합니다. ` widget `는 ` QMdiSubWindow `이거나 서브윈도우의 내부 위젯이어야 합니다. 참고: ` QMdiArea`는 실제로 ` widget `를 삭제하지 않습니다. ` QMdiSubWindow `가 전달되면, 그 부모가 ` nullptr `로 설정되고 제거됩니다. 하지만 내부 위젯이 전달되면, 자식 위젯이 ` nullptr `로 설정되고 ` QMdiSubWindow `는 제거되지 않습니다.

addSubWindow()도 참조하십시오 .

[override virtual protected] void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)

QAbstractScrollArea::resizeEvent(QResizeEvent *event)를 재구현합니다.

[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)

QAbstractScrollArea::scrollContentsBy(int dx, int dy)를 재구현합니다.

[slot] void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)

window 서브창을 활성화합니다. window 가 nullptr 인 경우, 현재 활성화된 창은 비활성화됩니다.

activeSubWindow()도 참조하십시오 .

void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)

on 가 true인 경우, MDI 영역에서 option 가 활성화되며, 그렇지 않은 경우 비활성화됩니다. 각 옵션의 효과에 대해서는 AreaOption 를 참조하십시오.

AreaOption 및 testOption()도 참조하십시오 .

[override virtual protected slot] void QMdiArea::setupViewport(QWidget *viewport)

QAbstractScrollArea::setupViewport(QWidget *viewport)을 재구현합니다.

이 슬롯은 ` setViewport()`가 호출된 후 ` QAbstractScrollArea `에 의해 호출됩니다. ` QMdiArea `의 서브클래스에서 이 함수를 재구현하여, 새로운 ` viewport `가 사용되기 전에 초기화하십시오.

setViewport()도 참조하십시오 .

[override virtual protected] void QMdiArea::showEvent(QShowEvent *showEvent)

QWidget::showEvent(QShowEvent *event)를 재구현합니다.

[override virtual] QSize QMdiArea::sizeHint() const

QAbstractScrollArea::sizeHint() const를 재구현합니다.

[signal] void QMdiArea::subWindowActivated(QMdiSubWindow *window)

QMdiArea window 가 활성화된 후 이 신호를 발신합니다. 가 일 때, 는 마지막으로 활성화되었던 창을 방금 비활성화했으며, 작업 영역에는 활성화된 창이 하나도 없습니다. window nullptr QMdiArea

QMdiArea::activeSubWindow()도 참조하십시오 .

QList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const

MDI 영역에 있는 모든 하위 창의 목록을 반환합니다. order 가 CreationOrder (기본값)인 경우, 창들은 작업 공간에 삽입된 순서대로 정렬됩니다. order 가 StackingOrder 인 경우, 창들은 중첩 순서대로 나열되며, 최상단 창이 목록의 마지막 항목으로 표시됩니다. order 가 ActivationHistoryOrder 인 경우, 창들은 최근 활성화 기록에 따라 나열됩니다.

WindowOrder도 참조하십시오 .

bool QMdiArea::testOption(QMdiArea::AreaOption option) const

option 가 활성화되어 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

AreaOption 및 setOption()도 참조하십시오 .

[slot] void QMdiArea::tileSubWindows()

모든 자식 창을 타일 패턴으로 배열합니다.

cascadeSubWindows()도 참조하십시오 .

[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)

QObject::timerEvent(QTimerEvent *event)를 재구현합니다.

[override virtual protected] bool QMdiArea::viewportEvent(QEvent *event)

QAbstractScrollArea::viewportEvent(QEvent *event)를 재구현합니다.

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