QDockWidget Class
QDockWidget 클래스는 QMainWindow 안에 도킹하거나 바탕화면의 최상위 창으로 띄울 수 있는 위젯을 제공합니다. 더 보기...
헤더: | #include <QDockWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QWidget |
공용 유형
enum | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures } |
flags | DockWidgetFeatures |
속성
- allowedAreas : Qt::DockWidgetAreas
- features : DockWidgetFeatures
- floating : bool
- windowTitle : QString
공공 기능
QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QDockWidget() |
Qt::DockWidgetAreas | allowedAreas() const |
QDockWidget::DockWidgetFeatures | features() const |
bool | isAreaAllowed(Qt::DockWidgetArea area) const |
bool | isFloating() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
void | setFloating(bool floating) |
void | setTitleBarWidget(QWidget *widget) |
void | setWidget(QWidget *widget) |
QWidget * | titleBarWidget() const |
QAction * | toggleViewAction() const |
QWidget * | widget() const |
신호
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
void | dockLocationChanged(Qt::DockWidgetArea area) |
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
void | topLevelChanged(bool topLevel) |
void | visibilityChanged(bool visible) |
보호된 함수
virtual void | initStyleOption(QStyleOptionDockWidget *option) const |
재구현된 보호 함수
virtual void | changeEvent(QEvent *event) override |
virtual void | closeEvent(QCloseEvent *event) override |
virtual bool | event(QEvent *event) override |
virtual void | paintEvent(QPaintEvent *event) override |
상세 설명
QDockWidget은 도구 팔레트 또는 유틸리티 창이라고도 하는 독 위젯의 개념을 제공합니다. 도크 창은 QMainWindow 의 도크 위젯 영역 ( central widget ) 주변에 배치되는 보조 창입니다.
도크 창은 최종 사용자가 현재 영역 내에서 이동하거나, 새 영역으로 이동하거나, 플로팅(예: 도킹 해제)할 수 있습니다. 프로그래머는 QDockWidget API를 사용하여 도크 위젯의 이동, 플로팅 및 닫기 기능과 배치할 수 있는 영역을 제한할 수 있습니다.
모양
QDockWidget은 제목 표시줄과 콘텐츠 영역으로 구성됩니다. 제목 표시줄에는 도크 위젯 window title, 플로트 버튼 및 닫기 버튼이 표시됩니다. QDockWidget의 상태에 따라 플로트 및 닫기 버튼이 비활성화되거나 전혀 표시되지 않을 수 있습니다.
제목 표시줄과 버튼의 시각적 모양은 사용 중인 style 에 따라 달라집니다.
QDockWidget은 setWidget()로 설정된 자식 위젯의 래퍼 역할을 합니다. 사용자 지정 크기 힌트, 최소 및 최대 크기 및 크기 정책은 자식 위젯에서 구현해야 합니다. QDockWidget은 이를 존중하여 프레임과 제목을 포함하도록 자체 제약 조건을 조정합니다. 크기 제약 조건은 도킹 여부에 따라 변경되므로 QDockWidget 자체에 설정해서는 안 되며, 도킹된 QDockWidget은 프레임이 없고 제목 표시줄이 더 작아집니다.
참고: macOS에서 QDockWidget에 기본 창 핸들이 있는 경우(예: winId() 또는 하위 위젯이 호출된 경우) 제한 사항으로 인해 도킹을 해제할 때 도크 위젯을 끌 수 없습니다. 드래그를 시작하면 도크 위젯의 도킹이 해제되지만 도크 위젯 자체를 이동하려면 두 번째 드래그가 필요합니다.
QMainWindow 을참조하세요 .
멤버 유형 문서
열거형 QDockWidget::도크위젯기능
플래그 QDockWidget::도크위젯기능
Constant | 값 | 설명 |
---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | 도크 위젯을 닫을 수 있습니다. |
QDockWidget::DockWidgetMovable | 0x02 | 도크 위젯은 사용자가 도크 사이를 이동할 수 있습니다. |
QDockWidget::DockWidgetFloatable | 0x04 | 도크 위젯을 메인 창에서 분리하여 독립된 창으로 띄울 수 있습니다. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | 도크 위젯은 왼쪽에 세로 제목 표시줄을 표시합니다. 이를 사용하여 QMainWindow 에서 세로 공간을 늘릴 수 있습니다. |
QDockWidget::NoDockWidgetFeatures | 0x00 | 도크 위젯은 닫거나 이동하거나 띄울 수 없습니다. |
DockWidgetFeatures 유형은 QFlags<DockWidgetFeature>에 대한 typedef입니다. DockWidgetFeature 값의 OR 조합을 저장합니다.
속성 문서
allowedAreas : Qt::DockWidgetAreas
도크 위젯을 배치할 수 있는 영역
기본값은 Qt::AllDockWidgetAreas 입니다.
액세스 기능:
Qt::DockWidgetAreas | allowedAreas() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
알림 신호:
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
Qt::DockWidgetArea 를참조하세요 .
features : DockWidgetFeatures
이 프로퍼티는 도크 위젯이 움직일 수 있는지, 닫을 수 있는지, 플로팅 가능한지 여부를 저장합니다.
기본적으로 이 프로퍼티는 DockWidgetClosable, DockWidgetMovable 및 DockWidgetFloatable 의 조합으로 설정됩니다.
액세스 함수:
QDockWidget::DockWidgetFeatures | features() const |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
알림 신호:
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
DockWidgetFeature 를참조하세요 .
floating : bool
이 속성은 도크 위젯의 플로팅 여부를 보유합니다.
플로팅 도크 위젯은 QMainWindow 또는 탭 도크 위젯 그룹에 도킹되는 대신 상위 도크 위젯( QMainWindow)의 "상단에" 독립된 단일 창으로 사용자에게 표시됩니다.
플로팅 도크 위젯은 프로그래밍 또는 마우스 상호작용을 통해 개별적으로 위치를 지정하고 크기를 조정할 수 있습니다.
기본적으로 이 속성은 true
입니다.
이 속성이 변경되면 topLevelChanged()
신호가 전송됩니다.
기능에 액세스합니다:
bool | isFloating() const |
void | setFloating(bool floating) |
알림 신호:
void | topLevelChanged(bool topLevel) |
isWindow() 및 topLevelChanged()도 참조하세요 .
windowTitle : QString
이 속성에는 도크 위젯 제목(캡션)이 저장됩니다.
기본적으로 이 속성은 빈 문자열을 포함합니다.
함수에 액세스합니다:
QString | windowTitle() const |
void | setWindowTitle(const QString &) |
알림 신호:
void | windowTitleChanged(const QString &title) |
멤버 함수 문서
[explicit]
QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
부모 parent 및 창 플래그 flags 를 사용하여 QDockWidget을 구성합니다. 도크 위젯은 왼쪽 도크 위젯 영역에 배치됩니다.
[explicit]
QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
부모 parent 및 창 플래그 flags 를 사용하여 QDockWidget을 구성합니다. 도크 위젯은 왼쪽 도크 위젯 영역에 배치됩니다.
창 제목은 title 으로 설정됩니다. 이 제목은 QDockWidget이 도킹 및 도킹 해제될 때 사용됩니다. QMainWindow 에서 제공하는 컨텍스트 메뉴에서도 사용됩니다.
setWindowTitle()도 참조하세요 .
[virtual noexcept]
QDockWidget::~QDockWidget()
도크 위젯을 삭제합니다.
[signal]
void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
이 신호는 allowedAreas 속성이 변경될 때 발생합니다. allowedAreas 매개 변수는 속성의 새 값을 제공합니다.
참고: allowedAreas 속성에 대한 알림 신호입니다.
[override virtual protected]
void QDockWidget::changeEvent(QEvent *event)
다시 구현합니다: QWidget::changeEvent(QEvent * 이벤트).
[override virtual protected]
void QDockWidget::closeEvent(QCloseEvent *event)
다시 구현합니다: QWidget::closeEvent(QCloseEvent * 이벤트).
[signal]
void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)
이 신호는 도크 위젯이 다른 도크 area 로 이동하거나 현재 도크 영역의 다른 위치로 이동할 때 발생합니다. 이는 도크 위젯이 프로그래밍 방식으로 이동하거나 사용자가 새 위치로 드래그할 때 발생합니다.
[override virtual protected]
bool QDockWidget::event(QEvent *event)
다시 구현합니다: QWidget::event(QEvent * 이벤트).
[signal]
void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)
이 신호는 features 속성이 변경될 때 발생합니다. features 매개 변수는 속성의 새 값을 제공합니다.
참고: features 속성에 대한 알림 신호입니다.
[virtual protected]
void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const
QDockWidget 의 값으로 option 을 초기화합니다. 이 메서드는 하위 클래스에 QStyleOptionDockWidget 이 필요하지만 모든 정보를 직접 채우고 싶지 않을 때 유용합니다.
QStyleOption::initFrom()도 참조하세요 .
bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const
이 도크 위젯을 주어진 area 에 배치할 수 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[override virtual protected]
void QDockWidget::paintEvent(QPaintEvent *event)
다시 구현합니다: QWidget::paintEvent(QPaintEvent * 이벤트).
void QDockWidget::setTitleBarWidget(QWidget *widget)
임의의 widget 를 도크 위젯의 제목 표시줄로 설정합니다. widget 이 nullptr
인 경우 이전에 도크 위젯에 설정된 모든 사용자 지정 제목 표시줄 위젯은 제거되지만 삭제되지는 않으며 기본 제목 표시줄이 대신 사용됩니다.
제목 표시줄 위젯이 설정되어 있으면 QDockWidget 이 떠 있을 때 기본 창 장식이 사용되지 않습니다.
다음은 사용자 지정 제목 표시줄을 구현하기 위한 몇 가지 팁입니다:
- 제목 표시줄 위젯에서 명시적으로 처리하지 않는 마우스 이벤트는 QMouseEvent::ignore()를 호출하여 무시해야 합니다. 그런 다음 이러한 이벤트는 QDockWidget 부모로 전파되어 제목 표시줄을 끌면 이동하고, 두 번 클릭하면 도킹 및 도킹 해제하는 등 일반적인 방식으로 처리합니다.
- QDockWidget 에서 DockWidgetVerticalTitleBar 을 설정하면 제목 표시줄 위젯의 위치가 적절히 변경됩니다. resizeEvent ()에서는 제목 표시줄의 방향을 확인해야 합니다:
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget()); if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) { // I need to be vertical } else { // I need to be horizontal }
- 제목 표시줄 위젯에는 유효한 QWidget::sizeHint() 및 QWidget::minimumSizeHint()가 있어야 합니다. 이러한 함수는 제목 표시줄의 현재 방향을 고려해야 합니다.
- 도크 위젯에서 제목 표시줄을 제거할 수는 없습니다. 그러나 기본적으로 구성된 QWidget 을 제목 표시줄 위젯으로 설정하면 비슷한 효과를 얻을 수 있습니다.
위와 같이 qobject_cast()를 사용하면 제목 표시줄 위젯은 부모 QDockWidget 에 대한 전체 액세스 권한을 갖게 됩니다. 따라서 사용자 작업에 대한 응답으로 도킹 및 숨기기와 같은 작업을 수행할 수 있습니다.
titleBarWidget() 및 DockWidgetVerticalTitleBar 을참조하세요 .
void QDockWidget::setWidget(QWidget *widget)
독 위젯의 위젯을 widget 로 설정합니다.
widget 을 추가했을 때 도크 위젯이 표시되는 경우 show() 을 명시적으로 추가해야 합니다.
이 함수를 호출하기 전에 widget 레이아웃을 추가해야 하며, 그렇지 않으면 widget 이 표시되지 않습니다.
widget()도 참조하세요 .
QWidget *QDockWidget::titleBarWidget() const
QDockWidget, 또는 사용자 지정 제목 표시줄이 설정되지 않은 경우 nullptr
에 설정된 사용자 지정 제목 표시줄 위젯을 반환합니다.
setTitleBarWidget()도 참조하세요 .
QAction *QDockWidget::toggleViewAction() const
사용자가 이 도크 위젯을 표시하거나 닫을 수 있도록 메뉴 및 도구 모음에 추가할 수 있는 체크 가능한 동작을 반환합니다.
액션의 텍스트는 도크 위젯의 창 제목으로 설정됩니다.
QAction 개체는 QDockWidget 에서 소유하고 있으며 QDockWidget 이 삭제되면 자동으로 삭제됩니다.
참고: 이 액션은 프로그래밍 방식으로 도크 위젯을 표시하거나 숨기는 데 사용할 수 없습니다. 이를 위해서는 visible 속성을 사용하세요.
QAction::text 및 QWidget::windowTitle 을참조하세요 .
[signal]
void QDockWidget::topLevelChanged(bool topLevel)
이 신호는 floating 속성이 변경될 때 발생합니다. topLevel 매개 변수는 도크 위젯이 현재 플로팅 상태이면 참이고, 그렇지 않으면 거짓입니다.
참고: floating 속성에 대한 알림 신호입니다.
isWindow()도 참조하세요 .
[signal]
void QDockWidget::visibilityChanged(bool visible)
이 신호는 도크 위젯이 visible (또는 보이지 않음)이 될 때 발생합니다. 위젯이 숨겨지거나 표시될 때뿐만 아니라 탭이 있는 도크 영역에 도킹되어 탭이 선택되거나 선택 해제될 때에도 이 신호가 발생합니다.
참고: 신호는 QWidget::isVisible()와 다를 수 있습니다. 도크 위젯이 최소화되거나 탭화되어 선택되지 않았거나 비활성화된 탭에 연결된 경우 이러한 신호가 발생할 수 있습니다.
QWidget *QDockWidget::widget() const
도크 위젯의 위젯을 반환합니다. 위젯이 설정되지 않은 경우 이 함수는 0을 반환합니다.
setWidget()도 참조하세요 .
© 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.