Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-17 09:27:16

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 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 // QMDIAREA_H