File indexing completed on 2026-09-17 09:27:16
0001
0002
0003
0004
0005 #ifndef QMDIAREA_H
0006 #define QMDIAREA_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qabstractscrollarea.h>
0010 #if QT_CONFIG(tabwidget)
0011 #include <QtWidgets/qtabwidget.h>
0012 #endif
0013
0014 QT_REQUIRE_CONFIG(mdiarea);
0015
0016 QT_BEGIN_NAMESPACE
0017
0018 class QMdiSubWindow;
0019
0020 class QMdiAreaPrivate;
0021 class Q_WIDGETS_EXPORT QMdiArea : public QAbstractScrollArea
0022 {
0023 Q_OBJECT
0024 Q_PROPERTY(QBrush background READ background WRITE setBackground)
0025 Q_PROPERTY(WindowOrder activationOrder READ activationOrder WRITE setActivationOrder)
0026 Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode)
0027 #if QT_CONFIG(tabbar)
0028 Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
0029 Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable)
0030 Q_PROPERTY(bool tabsMovable READ tabsMovable WRITE setTabsMovable)
0031 #endif
0032 #if QT_CONFIG(tabwidget)
0033 Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape)
0034 Q_PROPERTY(QTabWidget::TabPosition tabPosition READ tabPosition WRITE setTabPosition)
0035 #endif
0036 public:
0037 enum AreaOption {
0038 DontMaximizeSubWindowOnActivation = 0x1
0039 };
0040 Q_DECLARE_FLAGS(AreaOptions, AreaOption)
0041
0042 enum WindowOrder {
0043 CreationOrder,
0044 StackingOrder,
0045 ActivationHistoryOrder
0046 };
0047 Q_ENUM(WindowOrder)
0048
0049 enum ViewMode {
0050 SubWindowView,
0051 TabbedView
0052 };
0053 Q_ENUM(ViewMode)
0054
0055 QMdiArea(QWidget *parent = nullptr);
0056 ~QMdiArea();
0057
0058 QSize sizeHint() const override;
0059 QSize minimumSizeHint() const override;
0060
0061 QMdiSubWindow *currentSubWindow() const;
0062 QMdiSubWindow *activeSubWindow() const;
0063 QList<QMdiSubWindow *> subWindowList(WindowOrder order = CreationOrder) const;
0064
0065 QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags flags = Qt::WindowFlags());
0066 void removeSubWindow(QWidget *widget);
0067
0068 QBrush background() const;
0069 void setBackground(const QBrush &background);
0070
0071 WindowOrder activationOrder() const;
0072 void setActivationOrder(WindowOrder order);
0073
0074 void setOption(AreaOption option, bool on = true);
0075 bool testOption(AreaOption opton) const;
0076
0077 void setViewMode(ViewMode mode);
0078 ViewMode viewMode() const;
0079
0080 #if QT_CONFIG(tabbar)
0081 bool documentMode() const;
0082 void setDocumentMode(bool enabled);
0083
0084 void setTabsClosable(bool closable);
0085 bool tabsClosable() const;
0086
0087 void setTabsMovable(bool movable);
0088 bool tabsMovable() const;
0089 #endif
0090 #if QT_CONFIG(tabwidget)
0091 void setTabShape(QTabWidget::TabShape shape);
0092 QTabWidget::TabShape tabShape() const;
0093
0094 void setTabPosition(QTabWidget::TabPosition position);
0095 QTabWidget::TabPosition tabPosition() const;
0096 #endif
0097
0098 Q_SIGNALS:
0099 void subWindowActivated(QMdiSubWindow *);
0100
0101 public Q_SLOTS:
0102 void setActiveSubWindow(QMdiSubWindow *window);
0103 void tileSubWindows();
0104 void cascadeSubWindows();
0105 void closeActiveSubWindow();
0106 void closeAllSubWindows();
0107 void activateNextSubWindow();
0108 void activatePreviousSubWindow();
0109
0110 protected Q_SLOTS:
0111 void setupViewport(QWidget *viewport) override;
0112
0113 protected:
0114 bool event(QEvent *event) override;
0115 bool eventFilter(QObject *object, QEvent *event) override;
0116 void paintEvent(QPaintEvent *paintEvent) override;
0117 void childEvent(QChildEvent *childEvent) override;
0118 void resizeEvent(QResizeEvent *resizeEvent) override;
0119 void timerEvent(QTimerEvent *timerEvent) override;
0120 void showEvent(QShowEvent *showEvent) override;
0121 bool viewportEvent(QEvent *event) override;
0122 void scrollContentsBy(int dx, int dy) override;
0123
0124 private:
0125 Q_DISABLE_COPY(QMdiArea)
0126 Q_DECLARE_PRIVATE(QMdiArea)
0127 Q_PRIVATE_SLOT(d_func(), void _q_deactivateAllWindows())
0128 Q_PRIVATE_SLOT(d_func(), void _q_processWindowStateChanged(Qt::WindowStates, Qt::WindowStates))
0129 Q_PRIVATE_SLOT(d_func(), void _q_currentTabChanged(int))
0130 Q_PRIVATE_SLOT(d_func(), void _q_closeTab(int))
0131 Q_PRIVATE_SLOT(d_func(), void _q_moveTab(int, int))
0132 };
0133
0134 Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiArea::AreaOptions)
0135
0136 QT_END_NAMESPACE
0137
0138 #endif