Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-16 09:23:46

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
0004 
0005 #ifndef QDYNAMICMAINWINDOW_H
0006 #define QDYNAMICMAINWINDOW_H
0007 
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qwidget.h>
0010 #if QT_CONFIG(tabwidget)
0011 #include <QtWidgets/qtabwidget.h>
0012 #endif
0013 
0014 QT_REQUIRE_CONFIG(mainwindow);
0015 
0016 QT_BEGIN_NAMESPACE
0017 
0018 class QDockWidget;
0019 class QMainWindowPrivate;
0020 class QMenuBar;
0021 class QStatusBar;
0022 class QToolBar;
0023 class QMenu;
0024 
0025 class Q_WIDGETS_EXPORT QMainWindow : public QWidget
0026 {
0027     Q_OBJECT
0028 
0029     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
0030     Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle)
0031 #if QT_CONFIG(dockwidget)
0032     Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated)
0033 #if QT_CONFIG(tabbar)
0034     Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
0035 #endif // QT_CONFIG(tabbar)
0036 #if QT_CONFIG(tabwidget)
0037     Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape)
0038 #endif // QT_CONFIG(tabwidget)
0039     Q_PROPERTY(bool dockNestingEnabled READ isDockNestingEnabled WRITE setDockNestingEnabled)
0040 #endif // QT_CONFIG(dockwidget)
0041     Q_PROPERTY(DockOptions dockOptions READ dockOptions WRITE setDockOptions)
0042 #if QT_CONFIG(toolbar)
0043     Q_PROPERTY(bool unifiedTitleAndToolBarOnMac READ unifiedTitleAndToolBarOnMac
0044                WRITE setUnifiedTitleAndToolBarOnMac)
0045 #endif
0046 
0047 public:
0048     enum DockOption {
0049         AnimatedDocks = 0x01,
0050         AllowNestedDocks = 0x02,
0051         AllowTabbedDocks = 0x04,
0052         ForceTabbedDocks = 0x08,  // implies AllowTabbedDocks, !AllowNestedDocks
0053         VerticalTabs = 0x10,      // implies AllowTabbedDocks
0054         GroupedDragging = 0x20    // implies AllowTabbedDocks
0055     };
0056     Q_ENUM(DockOption)
0057     Q_DECLARE_FLAGS(DockOptions, DockOption)
0058     Q_FLAG(DockOptions)
0059 
0060     explicit QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
0061     ~QMainWindow();
0062 
0063     QSize iconSize() const;
0064     void setIconSize(const QSize &iconSize);
0065 
0066     Qt::ToolButtonStyle toolButtonStyle() const;
0067     void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle);
0068 
0069 #if QT_CONFIG(dockwidget)
0070     bool isAnimated() const;
0071     bool isDockNestingEnabled() const;
0072 #endif
0073 
0074 #if QT_CONFIG(tabbar)
0075     bool documentMode() const;
0076     void setDocumentMode(bool enabled);
0077 #endif
0078 
0079 #if QT_CONFIG(tabwidget)
0080     QTabWidget::TabShape tabShape() const;
0081     void setTabShape(QTabWidget::TabShape tabShape);
0082     QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const;
0083     void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition);
0084 #endif // QT_CONFIG(tabwidget)
0085 
0086     void setDockOptions(DockOptions options);
0087     DockOptions dockOptions() const;
0088 
0089     bool isSeparator(const QPoint &pos) const;
0090 
0091 #if QT_CONFIG(menubar)
0092     QMenuBar *menuBar() const;
0093     void setMenuBar(QMenuBar *menubar);
0094 
0095     QWidget  *menuWidget() const;
0096     void setMenuWidget(QWidget *menubar);
0097 #endif
0098 
0099 #if QT_CONFIG(statusbar)
0100     QStatusBar *statusBar() const;
0101     void setStatusBar(QStatusBar *statusbar);
0102 #endif
0103 
0104     QWidget *centralWidget() const;
0105     void setCentralWidget(QWidget *widget);
0106 
0107     QWidget *takeCentralWidget();
0108 
0109 #if QT_CONFIG(dockwidget)
0110     void setCorner(Qt::Corner corner, Qt::DockWidgetArea area);
0111     Qt::DockWidgetArea corner(Qt::Corner corner) const;
0112 #endif
0113 
0114 #if QT_CONFIG(toolbar)
0115     void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea);
0116     void insertToolBarBreak(QToolBar *before);
0117 
0118     void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar);
0119     void addToolBar(QToolBar *toolbar);
0120     QToolBar *addToolBar(const QString &title);
0121     void insertToolBar(QToolBar *before, QToolBar *toolbar);
0122     void removeToolBar(QToolBar *toolbar);
0123     void removeToolBarBreak(QToolBar *before);
0124 
0125     bool unifiedTitleAndToolBarOnMac() const;
0126 
0127     Qt::ToolBarArea toolBarArea(const QToolBar *toolbar) const;
0128     bool toolBarBreak(QToolBar *toolbar) const;
0129 #endif // QT_CONFIG(toolbar)
0130 
0131 #if QT_CONFIG(dockwidget)
0132     void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget);
0133     void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget,
0134                        Qt::Orientation orientation);
0135     void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget,
0136                          Qt::Orientation orientation);
0137 #if QT_CONFIG(tabbar)
0138     void tabifyDockWidget(QDockWidget *first, QDockWidget *second);
0139     QList<QDockWidget*> tabifiedDockWidgets(QDockWidget *dockwidget) const;
0140 #endif
0141     void removeDockWidget(QDockWidget *dockwidget);
0142     bool restoreDockWidget(QDockWidget *dockwidget);
0143 
0144     Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const;
0145 
0146     void resizeDocks(const QList<QDockWidget *> &docks,
0147                      const QList<int> &sizes, Qt::Orientation orientation);
0148 #endif // QT_CONFIG(dockwidget)
0149 
0150     QByteArray saveState(int version = 0) const;
0151     bool restoreState(const QByteArray &state, int version = 0);
0152 
0153 #if QT_CONFIG(menu)
0154     virtual QMenu *createPopupMenu();
0155 #endif
0156 
0157 public Q_SLOTS:
0158 #if QT_CONFIG(dockwidget)
0159     void setAnimated(bool enabled);
0160     void setDockNestingEnabled(bool enabled);
0161 #endif
0162 #if QT_CONFIG(toolbar)
0163     void setUnifiedTitleAndToolBarOnMac(bool set);
0164 #endif
0165 
0166 Q_SIGNALS:
0167     void iconSizeChanged(const QSize &iconSize);
0168     void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
0169 #if QT_CONFIG(dockwidget)
0170     void tabifiedDockWidgetActivated(QDockWidget *dockWidget);
0171 #endif
0172 
0173 protected:
0174 #ifndef QT_NO_CONTEXTMENU
0175     void contextMenuEvent(QContextMenuEvent *event) override;
0176 #endif
0177     bool event(QEvent *event) override;
0178 
0179 private:
0180     Q_DECLARE_PRIVATE(QMainWindow)
0181     Q_DISABLE_COPY(QMainWindow)
0182     friend class QDockWidgetGroupWindow;
0183 };
0184 
0185 Q_DECLARE_OPERATORS_FOR_FLAGS(QMainWindow::DockOptions)
0186 
0187 QT_END_NAMESPACE
0188 
0189 #endif // QDYNAMICMAINWINDOW_H