QMainWindow Class
QMainWindow 클래스는 기본 응용 프로그램 창을 제공합니다. 더 보기...
Header: | #include <QMainWindow> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QWidget |
공용 유형
enum | DockOption { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, GroupedDragging } |
flags | DockOptions |
속성
|
|
공용 기능
QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QMainWindow() |
void | addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget) |
void | addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation) |
void | addToolBar(Qt::ToolBarArea area, QToolBar *toolbar) |
void | addToolBar(QToolBar *toolbar) |
QToolBar * | addToolBar(const QString &title) |
void | addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea) |
QWidget * | centralWidget() const |
Qt::DockWidgetArea | corner(Qt::Corner corner) const |
virtual QMenu * | createPopupMenu() |
QMainWindow::DockOptions | dockOptions() const |
Qt::DockWidgetArea | dockWidgetArea(QDockWidget *dockwidget) const |
bool | documentMode() const |
QSize | iconSize() const |
void | insertToolBar(QToolBar *before, QToolBar *toolbar) |
void | insertToolBarBreak(QToolBar *before) |
bool | isAnimated() const |
bool | isDockNestingEnabled() const |
QMenuBar * | menuBar() const |
QWidget * | menuWidget() const |
void | removeDockWidget(QDockWidget *dockwidget) |
void | removeToolBar(QToolBar *toolbar) |
void | removeToolBarBreak(QToolBar *before) |
void | resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation) |
bool | restoreDockWidget(QDockWidget *dockwidget) |
bool | restoreState(const QByteArray &state, int version = 0) |
QByteArray | saveState(int version = 0) const |
void | setCentralWidget(QWidget *widget) |
void | setCorner(Qt::Corner corner, Qt::DockWidgetArea area) |
void | setDockOptions(QMainWindow::DockOptions options) |
void | setDocumentMode(bool enabled) |
void | setIconSize(const QSize &iconSize) |
void | setMenuBar(QMenuBar *menuBar) |
void | setMenuWidget(QWidget *menuBar) |
void | setStatusBar(QStatusBar *statusbar) |
void | setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition) |
void | setTabShape(QTabWidget::TabShape tabShape) |
void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
void | splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation) |
QStatusBar * | statusBar() const |
QTabWidget::TabPosition | tabPosition(Qt::DockWidgetArea area) const |
QTabWidget::TabShape | tabShape() const |
QList<QDockWidget *> | tabifiedDockWidgets(QDockWidget *dockwidget) const |
void | tabifyDockWidget(QDockWidget *first, QDockWidget *second) |
QWidget * | takeCentralWidget() |
Qt::ToolBarArea | toolBarArea(const QToolBar *toolbar) const |
bool | toolBarBreak(QToolBar *toolbar) const |
Qt::ToolButtonStyle | toolButtonStyle() const |
bool | unifiedTitleAndToolBarOnMac() const |
공용 슬롯
void | setAnimated(bool enabled) |
void | setDockNestingEnabled(bool enabled) |
void | setUnifiedTitleAndToolBarOnMac(bool set) |
신호
void | iconSizeChanged(const QSize &iconSize) |
void | tabifiedDockWidgetActivated(QDockWidget *dockWidget) |
void | toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle) |
재구현된 보호 기능
virtual void | contextMenuEvent(QContextMenuEvent *event) override |
virtual bool | event(QEvent *event) override |
상세 설명
Qt 메인 윈도우 프레임워크
메인 윈도우는 어플리케이션의 사용자 인터페이스를 구축하기 위한 프레임워크를 제공합니다. Qt에는 메인 윈도우 관리를 위한 QMainWindow와 관련 클래스가 있습니다. QMainWindow에는 QToolBars, QDockWidgets, QMenuBar, QStatusBar 를 추가할 수 있는 자체 레이아웃이 있습니다. 레이아웃에는 모든 종류의 위젯이 차지할 수 있는 중앙 영역이 있습니다. 아래에서 레이아웃 이미지를 볼 수 있습니다.
메인 창 컴포넌트 만들기
중앙 위젯은 일반적으로 QTextEdit 또는 QGraphicsView 과 같은 표준 Qt 위젯입니다. 고급 애플리케이션에는 사용자 정의 위젯을 사용할 수도 있습니다. 중앙 위젯은 setCentralWidget()
로 설정합니다.
메인 창에는 단일(SDI) 또는 다중(MDI) 문서 인터페이스가 있습니다. Qt에서 중앙 위젯으로 QMdiArea 을 사용하여 MDI 애플리케이션을 만듭니다.
이제 메인 창에 추가할 수 있는 다른 위젯을 각각 살펴보겠습니다. 위젯을 만들고 추가하는 방법에 대한 예제를 제공합니다.
메뉴 생성하기
Qt는 메뉴를 QMenu 에 구현하고 QMainWindow는 QMenuBar 에 보관합니다. QAction는 메뉴에 추가되어 메뉴 항목으로 표시됩니다.
창에 QMenuBar 을 반환하는 menuBar()
을 호출한 다음 QMenuBar::addMenu()로 메뉴를 추가하여 메인 창의 메뉴 표시줄에 새 메뉴를 추가할 수 있습니다.
Q메인창에는 기본 메뉴 표시줄이 제공되지만 setMenuBar()
을 사용하여 직접 설정할 수도 있습니다. 사용자 지정 메뉴 표시줄을 구현하려는 경우(즉, QMenuBar 위젯을 사용하지 않으려는 경우) setMenuWidget()
을 사용하여 설정할 수 있습니다.
메뉴 생성 방법의 예는 다음과 같습니다:
void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct);
createPopupMenu()
함수는 메인 창이 컨텍스트 메뉴 이벤트를 수신할 때 팝업 메뉴를 만듭니다. 기본 구현은 도크 위젯 및 도구 모음에서 확인 가능한 동작이 있는 메뉴를 생성합니다. 사용자 지정 메뉴의 경우 createPopupMenu()
을 다시 구현할 수 있습니다.
도구 모음 만들기
툴바는 QToolBar 클래스에서 구현됩니다. addToolBar()
을 사용하여 기본 창에 도구 모음을 추가합니다.
툴바를 특정 Qt::ToolBarArea 에 할당하여 툴바의 초기 위치를 제어합니다. addToolBarBreak()
또는 insertToolBarBreak()
을 사용하여 텍스트 편집의 줄 바꿈과 같은 도구 모음 나누기를 삽입하여 영역을 분할할 수 있습니다. QToolBar::setAllowedAreas() 및 QToolBar::setMovable()을 사용하여 사용자에 의해 배치를 제한할 수도 있습니다.
툴바 아이콘의 크기는 iconSize()
로 검색할 수 있습니다. 크기는 플랫폼에 따라 다르며 setIconSize()
으로 고정 크기를 설정할 수 있습니다. setToolButtonStyle()
으로 도구 모음에 있는 모든 도구 버튼의 모양을 변경할 수 있습니다.
다음은 도구 모음 생성의 예입니다:
void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(newAct);
도크 위젯 만들기
도크 위젯은 QDockWidget 클래스에서 구현됩니다. 도크 위젯은 메인 창에 도킹할 수 있는 창입니다. addDockWidget()
을 사용하여 기본 창에 도크 위젯을 추가합니다.
Qt::DockWidgetArea 열거형에 지정된 대로 왼쪽, 오른쪽, 위쪽, 아래쪽의 네 가지 도크 위젯 영역이 있습니다. setCorner()
와 겹치는 모서리를 차지할 도크 위젯 영역을 지정할 수 있습니다. 기본적으로 각 영역에는 한 줄(세로 또는 가로)의 도크 위젯만 포함할 수 있지만 setDockNestingEnabled()
으로 중첩을 활성화하면 어느 방향으로든 도크 위젯을 추가할 수 있습니다.
두 개의 도크 위젯을 서로 겹쳐서 쌓을 수도 있습니다. 그런 다음 QTabBar 을 사용하여 어떤 위젯을 표시할지 선택합니다.
다음은 기본 창에 도크 위젯을 만들고 추가하는 방법의 예입니다:
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); dockWidget->setWidget(dockWidgetContents); addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
상태 표시줄
setStatusBar()
로 상태 표시줄을 설정할 수 있지만 statusBar()
(기본 창의 상태 표시줄을 반환하는)을 처음 호출할 때 상태 표시줄이 만들어집니다. 사용 방법에 대한 자세한 내용은 QStatusBar 을 참조하세요.
상태 저장하기
Q메인창은 saveState()
으로 레이아웃의 상태를 저장할 수 있으며, 나중에 restoreState()
으로 검색할 수 있습니다. 저장되는 것은 도구 모음과 도크 위젯의 위치와 크기(기본 창 크기 기준)입니다.
QMenuBar, QToolBar, QStatusBar, QDockWidget 및 메뉴 예시도참조하세요 .
멤버 유형 문서
열거형 QMainWindow::DockOption
플래그 QMainWindow::DockOptions
이 열거형에는 QMainWindow 의 도킹 동작을 지정하는 플래그가 포함되어 있습니다.
Constant | 값 | 설명 |
---|---|---|
QMainWindow::AnimatedDocks | 0x01 | animated 속성과 동일합니다. |
QMainWindow::AllowNestedDocks | 0x02 | dockNestingEnabled 속성과 동일합니다. |
QMainWindow::AllowTabbedDocks | 0x04 | 사용자는 하나의 도크 위젯을 다른 위젯 위에 놓을 수 있습니다. 두 위젯이 쌓이고 어떤 위젯을 표시할지 선택할 수 있는 탭 표시줄이 나타납니다. |
QMainWindow::ForceTabbedDocks | 0x08 | 각 도크 영역에는 탭이 있는 도크 위젯의 단일 스택이 포함됩니다. 즉, 도크 영역에서 도크 위젯을 나란히 배치할 수 없습니다. 이 옵션이 설정되어 있으면 AllowNestedDocks는 아무런 영향을 미치지 않습니다. |
QMainWindow::VerticalTabs | 0x10 | 기본 창의 측면에 있는 두 개의 세로 도크 영역은 탭을 세로로 표시합니다. 이 옵션을 설정하지 않으면 모든 도크 영역의 탭이 하단에 표시됩니다. 허용 탭 도크를 의미합니다. setTabPosition ()도 참조하세요. |
QMainWindow::GroupedDragging | 0x20 | 도크의 제목 표시줄을 드래그할 때 탭이 있는 모든 탭이 함께 드래그됩니다. AllowTabbedDocks를 암시합니다. 허용되는 영역에 제한이 있는 일부 QDockWidget의 경우 제대로 작동하지 않습니다. (이 열거형 값은 Qt 5.6에서 추가되었습니다.) |
이 옵션은 도크 위젯을 QMainWindow 에 놓을 수 있는 방법만 제어합니다. 지정된 옵션에 맞게 도크 위젯을 다시 정렬하지는 않습니다. 따라서 도크 위젯을 기본 창에 추가하기 전에 설정해야 합니다. 애니메이션 독 및 수직 탭 옵션은 예외이며 언제든지 설정할 수 있습니다.
DockOptions 유형은 QFlags<DockOption>에 대한 typedef입니다. DockOption 값의 OR 조합을 저장합니다.
속성 문서
animated : bool
이 속성은 도크 위젯 및 도구 모음 조작에 애니메이션이 적용될지 여부를 유지합니다.
도크 위젯이나 도구 모음을 기본 창 위로 끌면 기본 창은 도크 위젯이나 도구 모음을 놓을 경우 도킹될 위치를 표시하도록 내용을 조정합니다. 이 속성을 설정하면 QMainWindow 콘텐츠가 부드러운 애니메이션으로 이동합니다. 이 속성을 지우면 콘텐츠가 새 위치로 스냅됩니다.
기본적으로 이 속성은 설정되어 있습니다. 기본 창에 크기 조정이나 다시 칠하는 속도가 느린 위젯이 포함된 경우 이 속성을 지울 수 있습니다.
이 속성을 설정하는 방법은 setDockOptions()을 사용하여 AnimatedDocks 옵션을 설정하는 방법과 동일합니다.
기능 액세스:
bool | isAnimated() const |
void | setAnimated(bool enabled) |
dockNestingEnabled : bool
이 속성은 도크를 중첩할 수 있는지 여부를 나타냅니다.
이 속성이 false
인 경우 도크 영역에는 한 줄(가로 또는 세로)의 도크 위젯만 포함할 수 있습니다. 이 속성이 true
인 경우 도크 위젯이 차지하는 영역을 양방향으로 분할하여 더 많은 도크 위젯을 포함할 수 있습니다.
도크 중첩은 도크 위젯이 많이 포함된 애플리케이션에만 필요합니다. 이 기능을 사용하면 메인 창을 보다 자유롭게 구성할 수 있습니다. 그러나 도크 중첩을 사용하면 도크 위젯을 기본 창 위로 드래그할 때 도크 영역에 놓을 수 있는 방법이 더 많아지므로 더 복잡하고 직관적이지 않은 동작이 발생합니다.
이 속성을 설정하는 것은 setDockOptions()을 사용하여 AllowNestedDocks 옵션을 설정하는 것과 동일합니다.
기능 액세스:
bool | isDockNestingEnabled() const |
void | setDockNestingEnabled(bool enabled) |
dockOptions : DockOptions
이 프로퍼티는 다음과 같은 도킹 동작을 보유합니다. QMainWindow
기본값은 AnimatedDocks | AllowTabbedDocks 입니다.
액세스 함수입니다:
QMainWindow::DockOptions | dockOptions() const |
void | setDockOptions(QMainWindow::DockOptions options) |
documentMode : bool
이 속성은 탭형 도크위젯의 탭 표시줄이 문서 모드로 설정되어 있는지 여부를 저장합니다.
기본값은 false입니다.
기능에 액세스합니다:
bool | documentMode() const |
void | setDocumentMode(bool enabled) |
QTabBar::documentMode 를참조하세요 .
iconSize : QSize
이 메인 창에서 도구 모음 아이콘의 크기를 설정합니다.
기본값은 GUI 스타일의 기본 도구 모음 아이콘 크기입니다. 아이콘은 축소된 크기만 표시되므로 사용되는 아이콘은 이 크기 이상이어야 합니다.
기능에 액세스합니다:
QSize | iconSize() const |
void | setIconSize(const QSize &iconSize) |
tabShape : QTabWidget::TabShape
이 속성은 탭 도크 위젯에 사용되는 탭 모양을 저장합니다.
기본값은 QTabWidget::Rounded 입니다.
함수에 액세스합니다:
QTabWidget::TabShape | tabShape() const |
void | setTabShape(QTabWidget::TabShape tabShape) |
setTabPosition()도 참조하세요 .
toolButtonStyle : Qt::ToolButtonStyle
이 메인 창에서 도구 모음 버튼의 스타일을 설정합니다.
도구 버튼의 스타일을 시스템 설정을 따르게 하려면 이 속성을 Qt::ToolButtonFollowStyle 로 설정합니다. Unix에서는 데스크톱 환경의 사용자 설정이 사용됩니다. 다른 플랫폼에서는 Qt::ToolButtonFollowStyle 은 아이콘만 의미합니다.
기본값은 Qt::ToolButtonIconOnly 입니다.
기능에 접근합니다:
Qt::ToolButtonStyle | toolButtonStyle() const |
void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
unifiedTitleAndToolBarOnMac : bool
이 속성은 창이 macOS에서 통합 제목과 툴바 모양을 사용할지 여부를 유지합니다.
Qt 5 구현은 Qt 4에 비해 몇 가지 제한 사항이 있습니다:
- OpenGL 콘텐츠가 있는 창에서의 사용은 지원되지 않습니다. 여기에는 QOpenGLWidget 이 포함됩니다.
- 도킹 가능 또는 이동 가능한 도구 모음을 사용하면 페인팅 오류가 발생할 수 있으므로 권장하지 않습니다.
액세스 함수:
bool | unifiedTitleAndToolBarOnMac() const |
void | setUnifiedTitleAndToolBarOnMac(bool set) |
멤버 함수 문서
[explicit]
QMainWindow::QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
주어진 parent 와 지정된 위젯 flags 으로 QMainWindow를 생성합니다.
QMainWindow는 Qt::Window 플래그 자체를 설정하므로 항상 최상위 위젯으로 생성됩니다.
[virtual noexcept]
QMainWindow::~QMainWindow()
메인 창을 삭제합니다.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
지정된 area 에 지정된 dockwidget 을 추가합니다.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
orientation 에서 지정한 방향으로 주어진 area 에 dockwidget 을 추가합니다.
void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
이 기본 창에서 지정된 area 에 toolbar 을 추가합니다. toolbar 은 현재 도구 모음 블록의 끝(즉, 줄)에 배치됩니다. 기본 창에서 이미 toolbar 을 관리하고 있는 경우에는 도구 모음만 area 으로 이동합니다.
insertToolBar(), addToolBarBreak() 및 insertToolBarBreak()도 참조하세요 .
void QMainWindow::addToolBar(QToolBar *toolbar)
이 함수는 오버로드된 함수입니다.
추가 도구 모음(Qt::TopToolBarArea, toolbar)을 호출하는 것과 동일합니다.
QToolBar *QMainWindow::addToolBar(const QString &title)
이 함수는 오버로드된 함수입니다.
QToolBar 개체를 생성하고 창 제목을 title 으로 설정하여 상단 도구 모음 영역에 삽입합니다.
setWindowTitle()도 참조하세요 .
void QMainWindow::addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)
존재하는 다른 모든 개체 뒤에 지정된 area 에 툴바 나누기를 추가합니다.
QWidget *QMainWindow::centralWidget() const
메인 창의 중앙 위젯을 반환합니다. 이 함수는 중앙 위젯이 설정되지 않은 경우 nullptr
을 반환합니다.
setCentralWidget()도 참조하세요 .
[override virtual protected]
void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
다시 구현합니다: QWidget::contextMenuEvent(QContextMenuEvent * 이벤트).
Qt::DockWidgetArea QMainWindow::corner(Qt::Corner corner) const
지정된 corner 을 차지하는 도크 위젯 영역을 반환합니다.
setCorner()도 참조하세요 .
[virtual]
QMenu *QMainWindow::createPopupMenu()
메인 창에 있는 도구 모음과 도크 위젯에 대해 체크 가능한 항목이 포함된 팝업 메뉴를 반환합니다. 도구 모음과 독 위젯이 없는 경우 이 함수는 nullptr
을 반환합니다.
기본적으로 이 함수는 사용자가 일반적으로 도구 모음이나 독 위젯을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 활성화할 때 기본 창에서 호출됩니다.
사용자 지정 팝업 메뉴를 만들려면 이 함수를 다시 구현하여 새로 만든 팝업 메뉴를 반환하세요. 팝업 메뉴의 소유권은 호출자에게 이전됩니다.
addDockWidget(), addToolBar() 및 menuBar()도 참조하세요 .
Qt::DockWidgetArea QMainWindow::dockWidgetArea(QDockWidget *dockwidget) const
dockwidget 에 대해 Qt::DockWidgetArea 를 반환합니다. dockwidget 이 기본 창에 추가되지 않은 경우 이 함수는 Qt::NoDockWidgetArea
을 반환합니다.
addDockWidget(), splitDockWidget() 및 Qt::DockWidgetArea 를참조하십시오 .
[override virtual protected]
bool QMainWindow::event(QEvent *event)
다시 구현합니다: QWidget::event(QEvent * 이벤트).
[signal]
void QMainWindow::iconSizeChanged(const QSize &iconSize)
이 신호는 창에서 사용되는 아이콘의 크기가 변경될 때 발생합니다. 새 아이콘 크기는 iconSize 에 전달됩니다.
이 신호를 다른 컴포넌트에 연결하여 애플리케이션의 일관된 모양을 유지할 수 있습니다.
setIconSize()도 참조하세요 .
void QMainWindow::insertToolBar(QToolBar *before, QToolBar *toolbar)
before 툴바가 차지하고 있는 영역에 toolbar 을 삽입하여 그 앞에 표시되도록 합니다. 예를 들어 일반적인 왼쪽에서 오른쪽 레이아웃 작업에서 이는 가로 툴바 영역에서 before 으로 지정된 툴바의 왼쪽에 toolbar 이 표시됨을 의미합니다.
insertToolBarBreak(), addToolBar() 및 addToolBarBreak()도 참조하세요 .
void QMainWindow::insertToolBarBreak(QToolBar *before)
before 으로 지정된 도구 모음 앞에 도구 모음 나누기를 삽입합니다.
QMenuBar *QMainWindow::menuBar() const
메인 창의 메뉴 모음을 반환합니다. 이 함수는 메뉴 표시줄이 없는 경우 빈 메뉴 표시줄을 생성하여 반환합니다.
Mac 애플리케이션의 모든 창에서 하나의 메뉴 모음을 공유하려는 경우 여기에서 생성된 메뉴 모음은 QMainWindow 을 부모로 가지므로 이 함수를 사용하여 메뉴 모음을 만들지 마세요. 대신 부모가 없는 메뉴 모음을 만든 다음 모든 Mac 창에서 공유할 수 있도록 해야 합니다. 이 방법으로 부모가 없는 메뉴 모음을 만듭니다:
setMenuBar()도 참조하세요 .
QWidget *QMainWindow::menuWidget() const
메인 창의 메뉴 표시줄을 반환합니다. 메뉴 표시줄이 아직 구성되지 않은 경우 이 함수는 null을 반환합니다.
setMenuWidget()도 참조하세요 .
void QMainWindow::removeDockWidget(QDockWidget *dockwidget)
기본 창 레이아웃에서 dockwidget 을 제거하고 숨깁니다. dockwidget 링크는 삭제되지 않습니다.
void QMainWindow::removeToolBar(QToolBar *toolbar)
기본 창 레이아웃에서 toolbar 을 제거하고 숨깁니다. toolbar 링크는 삭제되지 않습니다.
void QMainWindow::removeToolBarBreak(QToolBar *before)
before 으로 지정된 도구 모음 앞에 이전에 삽입된 도구 모음 나누기를 제거합니다.
void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)
목록 docks 의 도크 위젯 크기를 sizes 목록의 해당 크기(픽셀)로 조정합니다. orientation 이 Qt::Horizontal 인 경우 너비를 조정하고, 그렇지 않으면 도크 위젯의 높이를 조정합니다. 최대 크기와 최소 크기를 준수하도록 크기가 조정되며 QMainWindow 자체의 크기는 조정되지 않습니다. 추가/누락된 공간은 크기의 상대적 가중치에 따라 위젯 간에 분배됩니다.
예시:
resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt::Horizontal);
파란색 위젯과 노란색 위젯이 같은 레벨에 중첩되어 있는 경우 노란색 위젯이 파란색 위젯보다 두 배 커지도록 크기가 조정됩니다.
일부 위젯이 탭으로 그룹화되어 있는 경우 그룹당 하나의 위젯만 지정해야 합니다. 목록에 없는 위젯은 제약 조건을 준수하기 위해 변경될 수 있습니다.
bool QMainWindow::restoreDockWidget(QDockWidget *dockwidget)
restoreState() 호출 이후에 생성된 경우 dockwidget 상태를 복원합니다. 상태가 복원된 경우 true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
restoreState() 및 saveState()도 참조하세요 .
bool QMainWindow::restoreState(const QByteArray &state, int version = 0)
이 메인창의 도구 모음 및 독 위젯의 state 을 복원합니다. 모서리 설정도 복원합니다. version 번호는 state 에 저장된 번호와 비교됩니다. 일치하지 않으면 메인창의 상태가 변경되지 않고 이 함수는 false
을 반환하고, 그렇지 않으면 상태가 복원되고 이 함수는 true
을 반환합니다.
QSettings 를 사용하여 저장한 지오메트리를 복원하려면 다음과 같은 코드를 사용할 수 있습니다:
void MainWindow::readSettings() { QSettings settings("MyCompany", "MyApp"); restoreGeometry(settings.value("myWidget/geometry").toByteArray()); restoreState(settings.value("myWidget/windowState").toByteArray()); }
saveState(), QWidget::saveGeometry(), QWidget::restoreGeometry() 및 restoreDockWidget()도 참조하세요 .
QByteArray QMainWindow::saveState(int version = 0) const
이 메인창의 도구 모음 및 독 위젯의 현재 상태를 저장합니다. 여기에는 setCorner()로 설정할 수 있는 모서리 설정이 포함됩니다. version 번호는 데이터의 일부로 저장됩니다.
objectName 속성은 각 QToolBar 및 QDockWidget 을 식별하는 데 사용됩니다. 이 속성이 추가하는 QToolBar 및 QDockWidget 각각에 대해 고유한지 확인해야 합니다. QMainWindow
저장된 상태를 복원하려면 반환 값과 version 번호를 restoreState()에 전달합니다.
창이 닫힐 때 지오메트리를 저장하려면 다음과 같은 닫기 이벤트를 구현할 수 있습니다:
void MyMainWindow::closeEvent(QCloseEvent *event) { QSettings settings("MyCompany", "MyApp"); settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); QMainWindow::closeEvent(event); }
restoreState(), QWidget::saveGeometry() 및 QWidget::restoreGeometry()도 참조하세요 .
void QMainWindow::setCentralWidget(QWidget *widget)
지정된 widget 을 메인 창의 중앙 위젯으로 설정합니다.
참고: QMainWindow 은 widget 포인터의 소유권을 가져와 적절한 시점에 삭제합니다.
centralWidget()도 참조하세요 .
void QMainWindow::setCorner(Qt::Corner corner, Qt::DockWidgetArea area)
지정된 도크 위젯 area 이 지정된 corner 을 차지하도록 설정합니다.
corner()도 참조하세요 .
void QMainWindow::setMenuBar(QMenuBar *menuBar)
메인 창의 메뉴 표시줄을 menuBar 로 설정합니다.
참고: QMainWindow 은 menuBar 포인터의 소유권을 가져와 적절한 시점에 포인터를 삭제합니다.
menuBar()도 참조하세요 .
void QMainWindow::setMenuWidget(QWidget *menuBar)
메인 창의 메뉴 표시줄을 menuBar 로 설정합니다.
QMainWindow menuBar 포인터의 소유권을 가져와 적절한 시점에 삭제합니다.
menuWidget()도 참조하세요 .
void QMainWindow::setStatusBar(QStatusBar *statusbar)
기본 창의 상태 표시줄을 statusbar 로 설정합니다.
상태 표시줄을 nullptr
로 설정하면 기본 창에서 상태 표시줄이 제거됩니다. QMainWindow 은 statusbar 포인터의 소유권을 가져와 적절한 시점에 포인터를 삭제합니다.
statusBar()도 참조하세요 .
void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
지정된 도크 위젯 areas 의 탭 위치를 지정된 tabPosition 으로 설정합니다. 기본적으로 모든 도크 영역의 탭은 하단에 표시됩니다.
참고: VerticalTabs 도크 옵션은 이 메서드로 설정한 탭 위치를 재정의합니다.
tabPosition() 및 setTabShape()도 참조하세요 .
void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
first 독 위젯이 차지하는 공간을 두 부분으로 분할하여 first 독 위젯을 첫 번째 부분으로 이동하고 second 독 위젯을 두 번째 부분으로 이동합니다.
orientation 은 공간을 분할하는 방법을 지정합니다: Qt::Horizontal 분할은 두 번째 도크 위젯을 첫 번째 도크 위젯의 오른쪽에 배치하고 Qt::Vertical 분할은 두 번째 도크 위젯을 첫 번째 도크 위젯 아래에 배치합니다.
참고: first 가 현재 탭 도킹 영역에 있는 경우 second 은 first 의 이웃이 아닌 새 탭으로 추가됩니다. 이는 단일 탭에는 하나의 도크 위젯만 포함할 수 있기 때문입니다.
참고: Qt::LayoutDirection 은 분할된 영역의 두 부분에 있는 도크 위젯의 순서에 영향을 줍니다. 오른쪽에서 왼쪽 레이아웃 방향을 활성화하면 도크 위젯의 배치가 반대로 바뀝니다.
tabifyDockWidget(), addDockWidget() 및 removeDockWidget()도 참조하세요 .
QStatusBar *QMainWindow::statusBar() const
메인 창의 상태 표시줄을 반환합니다. 이 함수는 상태 표시줄이 없는 경우 빈 상태 표시줄을 생성하여 반환합니다.
setStatusBar()도 참조하세요 .
QTabWidget::TabPosition QMainWindow::tabPosition(Qt::DockWidgetArea area) const
area 에 대한 탭 위치를 반환합니다.
참고: VerticalTabs 도크 옵션은 이 함수가 반환하는 탭 위치를 재정의합니다.
setTabPosition() 및 tabShape()도 참조하세요 .
[signal]
void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)
이 신호는 탭을 선택하여 탭화된 도크 위젯이 활성화될 때 발생합니다. 활성화된 도크 위젯은 dockWidget 에 전달됩니다.
tabifyDockWidget() 및 tabifiedDockWidgets()도 참조하세요 .
QList<QDockWidget *> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const
dockwidget 와 함께 탭화된 도크 위젯을 반환합니다.
tabifyDockWidget()도 참조하세요 .
void QMainWindow::tabifyDockWidget(QDockWidget *first, QDockWidget *second)
second 도크 위젯을 first 도크 위젯 위로 이동하여 메인 창에 탭으로 된 도크 영역을 만듭니다.
tabifiedDockWidgets()도 참조하세요 .
QWidget *QMainWindow::takeCentralWidget()
이 메인 창에서 중앙 위젯을 제거합니다.
제거된 위젯의 소유권은 호출자에게 전달됩니다.
Qt::ToolBarArea QMainWindow::toolBarArea(const QToolBar *toolbar) const
toolbar 에 대해 Qt::ToolBarArea 를 반환합니다. toolbar 이 기본 창에 추가되지 않은 경우 이 함수는 Qt::NoToolBarArea
을 반환합니다.
addToolBar(), addToolBarBreak() 및 Qt::ToolBarArea 를참조하십시오 .
bool QMainWindow::toolBarBreak(QToolBar *toolbar) const
toolbar 앞에 툴바 나누기가 있는지 여부를 반환합니다.
addToolBarBreak() 및 insertToolBarBreak()도 참조하세요 .
[signal]
void QMainWindow::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)
이 신호는 창에서 도구 버튼에 사용되는 스타일이 변경될 때 발생합니다. 새 스타일은 toolButtonStyle 에 전달됩니다.
이 신호를 다른 구성 요소에 연결하여 애플리케이션의 일관된 모양을 유지할 수 있습니다.
setToolButtonStyle()도 참조하세요 .
© 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.