QMdiSubWindow Class
QMdiSubWindow 클래스는 ` QMdiArea`에 대한 하위 창 클래스를 제공합니다. 더 보기...
| 헤더: | #include <QMdiSubWindow> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 상속: | QWidget |
공개 유형
| enum | SubWindowOption { RubberBandResize, RubberBandMove } |
| flags | SubWindowOptions |
속성
- keyboardPageStep : int
- keyboardSingleStep : int
공개 함수
| QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QMdiSubWindow() |
| bool | isShaded() const |
| int | keyboardPageStep() const |
| int | keyboardSingleStep() const |
| QMdiArea * | mdiArea() const |
| void | setKeyboardPageStep(int step) |
| void | setKeyboardSingleStep(int step) |
| void | setOption(QMdiSubWindow::SubWindowOption option, bool on = true) |
| void | setSystemMenu(QMenu *systemMenu) |
| void | setWidget(QWidget *widget) |
| QMenu * | systemMenu() const |
| bool | testOption(QMdiSubWindow::SubWindowOption option) const |
| QWidget * | widget() const |
재구현된 공용 함수
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
공개 슬롯
| void | showShaded() |
| void | showSystemMenu() |
신호
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
재구현된 보호 함수
| virtual void | changeEvent(QEvent *changeEvent) override |
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual void | closeEvent(QCloseEvent *closeEvent) override |
| virtual void | contextMenuEvent(QContextMenuEvent *contextMenuEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *focusInEvent) override |
| virtual void | focusOutEvent(QFocusEvent *focusOutEvent) override |
| virtual void | hideEvent(QHideEvent *hideEvent) override |
| virtual void | keyPressEvent(QKeyEvent *keyEvent) override |
| virtual void | leaveEvent(QEvent *leaveEvent) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseMoveEvent(QMouseEvent *mouseEvent) override |
| virtual void | mousePressEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseReleaseEvent(QMouseEvent *mouseEvent) override |
| virtual void | moveEvent(QMoveEvent *moveEvent) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
상세 설명
QMdiSubWindow는 QMdiArea 내의 최상위 창을 나타내며, 창 장식 요소가 포함된 제목 표시줄, 내부 위젯, 그리고 (현재 스타일에 따라) 창 테두리와 크기 조정 핸들로 구성됩니다. QMdiSubWindow는 제목 표시줄과 내부 위젯을 위한 중앙 영역으로 구성된 자체 레이아웃을 가지고 있습니다.

QMdiSubWindow를 생성하는 가장 일반적인 방법은 내부 위젯을 인수로 전달하여 QMdiArea::addSubWindow()를 호출하는 것입니다. 또한 직접 서브윈도우를 생성하고, setWidget()를 호출하여 내부 위젯을 설정할 수도 있습니다.
서브윈도우를 프로그래밍할 때도 일반 최상위 윈도우와 동일한 API를 사용합니다(예: show(), hide(), showMaximized(), setWindowTitle()와 같은 함수를 호출할 수 있습니다).
서브윈도우 처리
QMdiSubWindow는 또한 MDI 영역 내의 하위 창에 특화된 동작을 지원합니다.
기본적으로 각 QMdiSubWindow는 이동 시 MDI 영역 뷰포트 내에서 표시되지만, 이동 및 크기 조정 시 서브창의 윤곽선만 업데이트되도록 투명한 창 이동 및 크기 조정 동작을 지정할 수도 있습니다. setOption() 함수는 이러한 동작을 활성화하는 데 사용됩니다.
isShaded() 함수는 서브윈도우가 현재 쉐이딩 상태(즉, 창이 접혀서 제목 표시줄만 보이는 상태)인지 여부를 감지합니다. 쉐이딩 모드로 전환하려면 showShaded()를 호출하십시오. QMdiSubWindow는 창 상태가 변경될 때마다(예: 창이 최소화되거나 복원될 때) ` windowStateChanged()` 신호를 발생시킵니다. 또한 활성화되기 전에 ` aboutToActivate()` 신호를 발생시킵니다.
키보드 상호작용 모드에서는 키보드를 사용하여 창을 이동하거나 크기를 조정할 수 있습니다. 이 모드는 창의 시스템 메뉴를 통해 진입할 수 있습니다. keyboardSingleStep 및 keyboardPageStep 속성은 키 입력 이벤트마다 위젯이 이동하거나 크기가 조정되는 거리를 제어합니다. Shift 키가 눌려 있으면 페이지 단위 이동이 적용되고, 그렇지 않으면 단일 단위 이동이 적용됩니다.
키보드를 사용하여 활성 창을 변경할 수도 있습니다. Ctrl 키와 Tab 키를 동시에 누르면 (현재 WindowOrder 값을 기준으로) 다음 하위 창이 활성화됩니다. Ctrl, Shift, Tab 키를 누르면 이전 창이 활성화됩니다. 이는 activateNextSubWindow() 및 activatePreviousSubWindow()를 호출하는 것과 동일합니다. 이 단축키들은 전역 단축키를 재정의하지만, QMdiArea의 단축키는 재정의하지 않는다는 점에 유의하십시오.
QMdiArea도 참조하십시오 .
멤버 유형 문서
enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions
이 열거형은 QMdiSubWindow 의 동작을 사용자 정의하는 옵션을 설명합니다.
| 상수 | 상수명 | 설명 |
|---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | 이 옵션을 활성화하면 서브 윈도우의 윤곽선을 나타내기 위해 고무줄 컨트롤이 사용되며, 사용자는 서브 윈도우 자체 대신 이 컨트롤의 크기를 조정합니다. 그 결과, 서브 윈도우는 크기 조정 작업이 완료될 때까지 원래의 위치와 크기를 유지하며, 작업이 완료되면 단일 QResizeEvent 를 수신합니다. 기본적으로 이 옵션은 비활성화되어 있습니다. |
QMdiSubWindow::RubberBandMove | 0x8 | 이 옵션을 활성화하면, 서브 윈도우의 윤곽을 나타내기 위해 러버 밴드 컨트롤이 사용되며, 사용자는 서브 윈도우 자체 대신 이 컨트롤을 이동시킵니다. 그 결과, 서브 윈도우는 이동 작업이 완료될 때까지 원래 위치에 그대로 남아 있으며, 이동 작업이 완료되면 QMoveEvent 가 윈도우로 전송됩니다. 기본적으로 이 옵션은 비활성화되어 있습니다. |
SubWindowOptions 유형은 QFlags<SubWindowOption>에 대한 typedef입니다. 이 유형은 SubWindowOption 값들의 OR 조합을 저장합니다.
속성 설명서
keyboardPageStep : int
키보드의 페이지 키를 사용할 때 위젯이 이동하거나 크기가 조정될 거리를 설정합니다.
키보드 상호작용 모드에서는 화살표 키와 페이지 키를 사용하여 창을 이동하거나 크기를 조정할 수 있습니다. 이 속성은 페이지 키의 동작을 제어합니다. 키보드 상호작용 모드로 진입하는 일반적인 방법은 하위 창 메뉴로 들어가서 "크기 조정" 또는 "이동"을 선택하는 것입니다.
키보드 페이지 키의 기본 단계 값은 20픽셀입니다.
액세스 함수:
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
keyboardSingleStep도 참조하십시오 .
keyboardSingleStep : int
키보드의 화살표 키를 사용할 때 위젯이 이동하거나 크기가 조정되는 정도를 설정합니다.
키보드 상호작용 모드에서는 화살표 키와 페이지 키를 사용하여 창을 이동하거나 크기를 조정할 수 있습니다. 이 속성은 화살표 키의 동작을 제어합니다. 키보드 상호작용 모드로 진입하는 일반적인 방법은 하위 창 메뉴로 들어가서 "크기 조정" 또는 "이동"을 선택하는 것입니다.
키보드 단일 이동 단위의 기본값은 5 픽셀입니다.
액세스 함수:
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
keyboardPageStep도 참조하십시오 .
멤버 함수 설명서
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
새로운 QMdiSubWindow 위젯을 생성합니다. parent 및 flags 인수는 QWidget 의 생성자에 전달됩니다.
addSubWindow()를 사용하는 대신, QMdiArea 에 서브윈도우를 추가할 때 단순히 setParent()을 사용할 수도 있습니다.
QMdiArea 의 자식으로는 QMdiSubWindow만 설정할 수 있다는 점에 유의하십시오. 예를 들어 다음과 같이 작성할 수는 없습니다:
QMdiArea::addSubWindow()도 참조하십시오 .
[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()
하위 창을 제거합니다.
QMdiArea::removeSubWindow()도 참조하십시오 .
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow 이 신호는 서브윈도우가 활성화되기 직전에 발생합니다. 서브윈도우가 활성화된 후에는, 해당 서브윈도우를 관리하는 QMdiArea 도 subWindowActivated() 신호를 발생시킵니다.
QMdiArea::subWindowActivated()도 참조하십시오 .
[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)
QWidget::changeEvent(QEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)
QObject::childEvent(QChildEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
QWidget::closeEvent(QCloseEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
QWidget::contextMenuEvent(QContextMenuEvent *event)를 재구현합니다.
[override virtual protected] bool QMdiSubWindow::event(QEvent *event)
QWidget::event(QEvent *event)를 재구현합니다.
[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
QObject::eventFilter(QObject *watched, QEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)
QWidget::focusInEvent(QFocusEvent *event)을 재구현합니다.
[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)
QWidget::focusOutEvent(QFocusEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)
QWidget::hideEvent(QHideEvent *event)을 재구현합니다.
bool QMdiSubWindow::isShaded() const
이 창이 접혀 있는 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.
창이 접혀서 제목 표시줄만 보이는 상태라면, 해당 창은 'shaded' 상태입니다.
[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)
QWidget::keyPressEvent(QKeyEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)
QWidget::leaveEvent(QEvent *event)를 재구현합니다.
QMdiArea *QMdiSubWindow::mdiArea() const
이 하위 창을 포함하는 영역을 반환하거나, 해당 영역이 없는 경우 ` nullptr `를 반환합니다.
QMdiArea::addSubWindow()도 참조하십시오 .
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
QWidget::minimumSizeHint 속성에 대한 액세스 함수를 재구현합니다.
[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
QWidget::mouseDoubleClickEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)
QWidget::mouseMoveEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)
QWidget::mousePressEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)
QWidget::mouseReleaseEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)
QWidget::moveEvent(QMoveEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
QWidget::paintEvent(QPaintEvent *event)를 재구현합니다.
[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)
QWidget::resizeEvent(QResizeEvent *event)를 재구현합니다.
경고: 하위 창을 최대화하거나 복원할때 , 이로 인해 호출되는 이 함수는 유효하지 않은 QResizeEvent::oldSize()을 전달받을 수 있습니다.
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
on 가 true인 경우, 해당 하위 창에서 option 가 활성화되며, 그렇지 않은 경우 비활성화됩니다. 각 옵션의 효과에 대해서는 SubWindowOption 를 참조하십시오.
SubWindowOption 및 testOption()도 참조하십시오 .
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
이 하위 창의 현재 시스템 메뉴로 ‘ systemMenu ’를 설정합니다.
기본적으로 각 QMdiSubWindow 에는 표준 시스템 메뉴가 있습니다.
QMdiSubWindow 에 의해 생성된 시스템 메뉴의 QActions는 현재 창 상태에 따라 자동으로 업데이트됩니다. 예를 들어, 창이 최소화되면 최소화 동작은 비활성화됩니다.
사용자가 추가한 QActions는 QMdiSubWindow 에 의해 업데이트되지 않습니다.
QMdiSubWindow systemMenu 의 소유권을 인수하므로, 이를 삭제할 필요는 없습니다. 기존의 메뉴는 모두 삭제됩니다.
systemMenu() 및 showSystemMenu()도 참조하십시오 .
void QMdiSubWindow::setWidget(QWidget *widget)
widget 를 이 하위 창의 내부 위젯으로 설정합니다. 내부 위젯은 하위 창의 제목 표시줄 바로 아래 중앙에 표시됩니다.
QMdiSubWindow widget 에 대한 소유권을 일시적으로 인수하므로, 이를 삭제할 필요는 없습니다. 기존 내부 위젯은 제거되고 루트 윈도우로 다시 부모가 지정됩니다.
widget()도 참조하십시오 .
[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)
QWidget::showEvent(QShowEvent *event)를 재구현합니다.
[slot] void QMdiSubWindow::showShaded()
이 함수를 호출하면 하위 창이 음영 모드로 전환됩니다. 하위 창이 음영 모드에 있을 때는 제목 표시줄만 표시됩니다.
모든 스타일이 음영 모드를 지원하는 것은 아니지만, 이 함수는 음영 모드 지원 여부와 관계없이 서브윈도우를 음영 모드로 표시합니다. 그러나 음영 모드를 지원하지 않는 스타일과 함께 사용할 경우, 사용자는 사용자 인터페이스(예: 제목 표시줄의 음영 버튼)를 통해 음영 모드에서 벗어나지 못합니다.
isShaded()도 참조하십시오 .
[slot] void QMdiSubWindow::showSystemMenu()
제목 표시줄의 시스템 메뉴 아이콘 아래에 시스템 메뉴를 표시합니다.
setSystemMenu() 및 systemMenu()도 참조하십시오 .
[override virtual] QSize QMdiSubWindow::sizeHint() const
QWidget::sizeHint 속성에 대한 액세스 함수를 다시 구현합니다.
QMenu *QMdiSubWindow::systemMenu() const
현재 시스템 메뉴에 대한 포인터를 반환하며, 시스템 메뉴가 설정되어 있지 않으면 0을 반환합니다. ` QMdiSubWindow `는 기본 시스템 메뉴를 제공하지만, ` setSystemMenu()`를 사용하여 메뉴를 직접 설정할 수도 있습니다.
setSystemMenu() 및 showSystemMenu()도 참조하십시오 .
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
option 가 활성화되어 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
SubWindowOption 및 setOption()도 참조하십시오 .
[override virtual protected] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)
QObject::timerEvent(QTimerEvent *event)를 재구현합니다.
QWidget *QMdiSubWindow::widget() const
현재 내부 위젯을 반환합니다.
setWidget()도 참조하십시오 .
[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow 창 상태가 변경된 후 이 신호를 발생시킵니다. ` oldState `는 변경 전의 창 상태이며, ` newState `는 새로운 현재 상태입니다.
© 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.