Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmainwindow.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QDYNAMICMAINWINDOW_H
6#define QDYNAMICMAINWINDOW_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtWidgets/qwidget.h>
10#if QT_CONFIG(tabwidget)
11#include <QtWidgets/qtabwidget.h>
12#endif
13
14QT_REQUIRE_CONFIG(mainwindow);
15
16QT_BEGIN_NAMESPACE
17
18class QDockWidget;
20class QMenuBar;
21class QStatusBar;
22class QToolBar;
23class QMenu;
24
25class Q_WIDGETS_EXPORT QMainWindow : public QWidget
26{
27 Q_OBJECT
28
29 Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
30 Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle)
31#if QT_CONFIG(dockwidget)
32 Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated)
33#if QT_CONFIG(tabbar)
34 Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
35#endif // QT_CONFIG(tabbar)
36#if QT_CONFIG(tabwidget)
37 Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape)
38#endif // QT_CONFIG(tabwidget)
39 Q_PROPERTY(bool dockNestingEnabled READ isDockNestingEnabled WRITE setDockNestingEnabled)
40#endif // QT_CONFIG(dockwidget)
41 Q_PROPERTY(DockOptions dockOptions READ dockOptions WRITE setDockOptions)
42#if QT_CONFIG(toolbar)
43 Q_PROPERTY(bool unifiedTitleAndToolBarOnMac READ unifiedTitleAndToolBarOnMac
44 WRITE setUnifiedTitleAndToolBarOnMac)
45#endif
46
47public:
48 enum DockOption {
49 AnimatedDocks = 0x01,
50 AllowNestedDocks = 0x02,
51 AllowTabbedDocks = 0x04,
52 ForceTabbedDocks = 0x08, // implies AllowTabbedDocks, !AllowNestedDocks
53 VerticalTabs = 0x10, // implies AllowTabbedDocks
54 GroupedDragging = 0x20 // implies AllowTabbedDocks
55 };
56 Q_ENUM(DockOption)
57 Q_DECLARE_FLAGS(DockOptions, DockOption)
58 Q_FLAG(DockOptions)
59
60 explicit QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
61 ~QMainWindow();
62
63 QSize iconSize() const;
64 void setIconSize(const QSize &iconSize);
65
66 Qt::ToolButtonStyle toolButtonStyle() const;
67 void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle);
68
69#if QT_CONFIG(dockwidget)
70 bool isAnimated() const;
71 bool isDockNestingEnabled() const;
72#endif
73
74#if QT_CONFIG(tabbar)
75 bool documentMode() const;
76 void setDocumentMode(bool enabled);
77#endif
78
79#if QT_CONFIG(tabwidget)
80 QTabWidget::TabShape tabShape() const;
81 void setTabShape(QTabWidget::TabShape tabShape);
82 QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const;
83 void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition);
84#endif // QT_CONFIG(tabwidget)
85
86 void setDockOptions(DockOptions options);
87 DockOptions dockOptions() const;
88
89 bool isSeparator(const QPoint &pos) const;
90
91#if QT_CONFIG(menubar)
92 QMenuBar *menuBar() const;
93 void setMenuBar(QMenuBar *menubar);
94
95 QWidget *menuWidget() const;
96 void setMenuWidget(QWidget *menubar);
97#endif
98
99#if QT_CONFIG(statusbar)
100 QStatusBar *statusBar() const;
101 void setStatusBar(QStatusBar *statusbar);
102#endif
103
104 QWidget *centralWidget() const;
105 void setCentralWidget(QWidget *widget);
106
107 QWidget *takeCentralWidget();
108
109#if QT_CONFIG(dockwidget)
110 void setCorner(Qt::Corner corner, Qt::DockWidgetArea area);
111 Qt::DockWidgetArea corner(Qt::Corner corner) const;
112#endif
113
114#if QT_CONFIG(toolbar)
115 void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea);
116 void insertToolBarBreak(QToolBar *before);
117
118 void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar);
119 void addToolBar(QToolBar *toolbar);
120 QToolBar *addToolBar(const QString &title);
121 void insertToolBar(QToolBar *before, QToolBar *toolbar);
122 void removeToolBar(QToolBar *toolbar);
123 void removeToolBarBreak(QToolBar *before);
124
125 bool unifiedTitleAndToolBarOnMac() const;
126
127 Qt::ToolBarArea toolBarArea(const QToolBar *toolbar) const;
128 bool toolBarBreak(QToolBar *toolbar) const;
129#endif // QT_CONFIG(toolbar)
130
131#if QT_CONFIG(dockwidget)
132 void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget);
133 void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget,
134 Qt::Orientation orientation);
135 void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget,
136 Qt::Orientation orientation);
137#if QT_CONFIG(tabbar)
138 void tabifyDockWidget(QDockWidget *first, QDockWidget *second);
139 QList<QDockWidget*> tabifiedDockWidgets(QDockWidget *dockwidget) const;
140#endif
141 void removeDockWidget(QDockWidget *dockwidget);
142 bool restoreDockWidget(QDockWidget *dockwidget);
143
144 Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const;
145
146 void resizeDocks(const QList<QDockWidget *> &docks,
147 const QList<int> &sizes, Qt::Orientation orientation);
148#endif // QT_CONFIG(dockwidget)
149
150 QByteArray saveState(int version = 0) const;
151 bool restoreState(const QByteArray &state, int version = 0);
152
153#if QT_CONFIG(menu)
154 virtual QMenu *createPopupMenu();
155#endif
156
157public Q_SLOTS:
158#if QT_CONFIG(dockwidget)
159 void setAnimated(bool enabled);
160 void setDockNestingEnabled(bool enabled);
161#endif
162#if QT_CONFIG(toolbar)
163 void setUnifiedTitleAndToolBarOnMac(bool set);
164#endif
165
166Q_SIGNALS:
167 void iconSizeChanged(const QSize &iconSize);
168 void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
169#if QT_CONFIG(dockwidget)
170 void tabifiedDockWidgetActivated(QDockWidget *dockWidget);
171#endif
172
173protected:
174#ifndef QT_NO_CONTEXTMENU
175 void contextMenuEvent(QContextMenuEvent *event) override;
176#endif
177 bool event(QEvent *event) override;
178
179private:
180 Q_DECLARE_PRIVATE(QMainWindow)
181 Q_DISABLE_COPY(QMainWindow)
182 friend class QDockWidgetGroupWindow;
183};
184
185Q_DECLARE_OPERATORS_FOR_FLAGS(QMainWindow::DockOptions)
186
187QT_END_NAMESPACE
188
189#endif // QDYNAMICMAINWINDOW_H
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-l...
Definition qdockwidget.h:21
The QMainWindow class provides a main application window.
Definition qmainwindow.h:26
friend class QWidget
Definition qpainter.h:431
QT_REQUIRE_CONFIG(animation)
static int grow(QLayoutStruct &ls, int delta)
static QRect dockedGeometry(QWidget *widget)
static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos)
static int realMinSize(const QDockAreaLayoutInfo &info)
static int qMax(int i1, int i2, int i3)
static int shrink(QLayoutStruct &ls, int delta)
static const int zero
static int separatorMoveHelper(QList< QLayoutStruct > &list, int index, int delta, int sep)
static QInternal::DockPosition dockPosHelper(const QRect &rect, const QPoint &_pos, Qt::Orientation o, bool nestingEnabled, QDockAreaLayoutInfo::TabMode tabMode)
static void paintSep(QPainter *p, QWidget *w, const QRect &r, Qt::Orientation o, bool mouse_over)
static int realMaxSize(const QDockAreaLayoutInfo &info)
QMainWindowLayout * qt_mainwindow_layout(const QMainWindow *window)
@ StateFlagFloating
@ StateFlagVisible
QT_REQUIRE_CONFIG(dockwidget)