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

속성

공용 함수

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에는 제목 표시줄과 내부 위젯을 위한 중앙 영역으로 구성된 자체 레이아웃이 있습니다.

가장 일반적인 방법은 내부 위젯을 인수로 QMdiArea::addSubWindow()를 호출하여 QMdiSubWindow를 구성하는 것입니다. 하위 창을 직접 만들고 setWidget()를 호출하여 내부 위젯을 설정할 수도 있습니다.

하위 창으로 프로그래밍할 때는 일반 최상위 창과 동일한 API를 사용합니다(예: show(), hide(), showMaximized(), setWindowTitle() 등의 함수를 호출할 수 있습니다).

서브윈도우 처리

QMdiSubWindow는 MDI 영역의 하위 창에 특정한 동작도 지원합니다.

기본적으로 각 QMdiSubWindow는 이동 시 MDI 영역 뷰포트 내에 표시되지만, 투명 창 이동 및 크기 조정 동작을 지정하여 이러한 작업 중에 하위 창의 윤곽선만 업데이트되도록 할 수도 있습니다. setOption () 함수는 이 동작을 활성화하는 데 사용됩니다.

isShaded() 함수는 하위 창이 현재 음영 처리되어 있는지(즉, 창이 축소되어 제목 표시줄만 표시되는지) 감지합니다. 음영 모드로 들어가려면 showShaded()를 호출합니다. QMdiSubWindow는 창 상태가 변경될 때마다(예: 창이 최소화되거나 복원될 때) windowStateChanged() 신호를 보냅니다. 또한 활성화되기 전에 aboutToActivate() 신호를 보냅니다.

키보드 대화형 모드에서는 키보드로 창을 이동하고 크기를 조정할 수 있습니다. 창의 시스템 메뉴를 통해 이 모드로 들어갈 수 있습니다. keyboardSingleStepkeyboardPageStep 속성은 각 키 누름 이벤트에 대해 위젯이 이동하거나 크기가 조정되는 거리를 제어합니다. Shift 키를 누르면 아래쪽 페이지 단계가 사용되며, 그렇지 않으면 단일 단계가 사용됩니다.

키보드로 활성 창을 변경할 수도 있습니다. control 키와 탭 키를 동시에 누르면 다음(현재 WindowOrder) 하위 창이 활성화됩니다. 컨트롤, 시프트, 탭 키를 동시에 누르면 이전 창이 활성화됩니다. 이는 activateNextSubWindow() 및 activatePreviousSubWindow()을 호출하는 것과 같습니다. 이러한 바로가기는 전역 바로가기를 재정의하지만 QMdiArea바로가기는 재정의하지 않는다는 점에 유의하세요.

QMdiArea참조하세요 .

멤버 유형 문서

열거형 QMdiSubWindow::SubWindowOption
플래그 QMdiSubWindow::SubWindowOptions

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

Constant설명
QMdiSubWindow::RubberBandResize0x4이 옵션을 활성화하면 고무줄 컨트롤이 하위 창의 윤곽을 나타내는 데 사용되며, 사용자는 하위 창 자체 대신 이 컨트롤의 크기를 조정합니다. 따라서 크기 조정 작업이 완료될 때까지 하위 창은 원래 위치와 크기를 유지하며, 이때 하위 창은 단일 QResizeEvent 을 받게 됩니다. 기본적으로 이 옵션은 비활성화되어 있습니다.
QMdiSubWindow::RubberBandMove0x8이 옵션을 활성화하면 고무줄 컨트롤이 하위 창의 윤곽을 나타내는 데 사용되며, 사용자는 하위 창 자체 대신 이 컨트롤을 움직입니다. 따라서 하위 창은 이동 작업이 완료될 때까지 원래 위치에 유지되며, 이때 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 위젯을 생성합니다. parentflags 인수는 QWidget 의 생성자에게 전달됩니다.

QMdiArea 에 하위 창을 추가할 때 addSubWindow()를 사용하는 대신 setParent()를 사용할 수도 있습니다.

QMdiSubWindowQMdiArea 의 자식으로 설정할 수 있으며, 예를 들어 쓸 수는 없습니다:

//bad code
QMdiArea mdiArea;
QTextEdit editor(&mdiArea); // invalid child widget

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 * 이벤트).

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

다시 구현합니다: QObject::childEvent(QChildEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)

다시 구현합니다: QWidget::closeEvent(QCloseEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)

다시 구현합니다: QWidget::contextMenuEvent(QContextMenuEvent * 이벤트).

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

다시 구현합니다: QWidget::event(QEvent * 이벤트).

[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 * 이벤트).

[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)

다시 구현합니다: QWidget::focusOutEvent(QFocusEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)

다시 구현합니다: QWidget::hideEvent(QHideEvent * 이벤트).

bool QMdiSubWindow::isShaded() const

이 창이 음영 처리된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

창이 축소되어 제목 표시줄만 표시되는 경우 창이 음영 처리됩니다.

[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)

다시 구현합니다: QWidget::keyPressEvent(QKeyEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)

다시 구현합니다: QWidget::leaveEvent(QEvent * 이벤트).

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 * 이벤트).

[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)

다시 구현합니다: QWidget::mouseMoveEvent(QMouseEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)

다시 구현합니다: QWidget::mousePressEvent(QMouseEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)

다시 구현합니다: QWidget::mouseReleaseEvent(QMouseEvent * 이벤트).

[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)

다시 구현합니다: QWidget::moveEvent(QMoveEvent * 이벤트).

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

다시 구현합니다: QWidget::paintEvent(QPaintEvent * 이벤트).

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

다시 구현합니다: QWidget::resizeEvent(QResizeEvent * 이벤트).

경고: 하위 창을 최대화하거나 복원할 때 이 함수에 대한 호출 결과가 잘못된 QResizeEvent::oldSize()일 수 있습니다.

void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

on 이 참이면 하위 창에서 option 이 활성화되고, 그렇지 않으면 비활성화됩니다. 각 옵션의 효과는 SubWindowOption 을 참조하세요.

SubWindowOptiontestOption()도 참조하세요 .

void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)

systemMenu 을 이 하위 창의 현재 시스템 메뉴로 설정합니다.

기본적으로 각 QMdiSubWindow 에는 표준 시스템 메뉴가 있습니다.

QMdiSubWindow 에서 만든 시스템 메뉴의 QAction은 현재 창 상태에 따라 자동으로 업데이트됩니다(예: 창이 최소화되면 최소화 동작이 비활성화됩니다).

사용자가 추가한 QAction은 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 * 이벤트).

[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 을 반환합니다.

SubWindowOptionsetOption()도 참조하세요 .

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

다시 구현합니다: QObject::timerEvent(Q타이머이벤트 *이벤트).

QWidget *QMdiSubWindow::widget() const

현재 내부 위젯을 반환합니다.

setWidget()도 참조하세요 .

[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

QMdiSubWindow 은 창 상태가 변경된 후 이 신호를 내보냅니다. oldState 은 변경 전 창 상태이고 newState 은 새로운 현재 상태입니다.

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