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 | |
4 | #ifndef QMDISUBWINDOW_H |
5 | #define QMDISUBWINDOW_H |
6 | |
7 | #include <QtWidgets/qtwidgetsglobal.h> |
8 | #include <QtWidgets/qwidget.h> |
9 | |
10 | QT_REQUIRE_CONFIG(mdiarea); |
11 | |
12 | QT_BEGIN_NAMESPACE |
13 | |
14 | class ; |
15 | class QMdiArea; |
16 | |
17 | namespace QMdi { class ControlContainer; } |
18 | class QMdiSubWindowPrivate; |
19 | class Q_WIDGETS_EXPORT QMdiSubWindow : public QWidget |
20 | { |
21 | Q_OBJECT |
22 | Q_PROPERTY(int keyboardSingleStep READ keyboardSingleStep WRITE setKeyboardSingleStep) |
23 | Q_PROPERTY(int keyboardPageStep READ keyboardPageStep WRITE setKeyboardPageStep) |
24 | public: |
25 | enum SubWindowOption { |
26 | AllowOutsideAreaHorizontally = 0x1, // internal |
27 | AllowOutsideAreaVertically = 0x2, // internal |
28 | RubberBandResize = 0x4, |
29 | RubberBandMove = 0x8 |
30 | }; |
31 | Q_DECLARE_FLAGS(SubWindowOptions, SubWindowOption) |
32 | |
33 | QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()); |
34 | ~QMdiSubWindow(); |
35 | |
36 | QSize sizeHint() const override; |
37 | QSize minimumSizeHint() const override; |
38 | |
39 | void setWidget(QWidget *widget); |
40 | QWidget *widget() const; |
41 | |
42 | QWidget *maximizedButtonsWidget() const; // internal |
43 | QWidget *() const; // internal |
44 | |
45 | bool isShaded() const; |
46 | |
47 | void setOption(SubWindowOption option, bool on = true); |
48 | bool testOption(SubWindowOption) const; |
49 | |
50 | void setKeyboardSingleStep(int step); |
51 | int keyboardSingleStep() const; |
52 | |
53 | void setKeyboardPageStep(int step); |
54 | int keyboardPageStep() const; |
55 | |
56 | #if QT_CONFIG(menu) |
57 | void (QMenu *); |
58 | QMenu *() const; |
59 | #endif |
60 | |
61 | QMdiArea *mdiArea() const; |
62 | |
63 | Q_SIGNALS: |
64 | void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); |
65 | void aboutToActivate(); |
66 | |
67 | public Q_SLOTS: |
68 | #if QT_CONFIG(menu) |
69 | void (); |
70 | #endif |
71 | void showShaded(); |
72 | |
73 | protected: |
74 | bool eventFilter(QObject *object, QEvent *event) override; |
75 | bool event(QEvent *event) override; |
76 | void showEvent(QShowEvent *showEvent) override; |
77 | void hideEvent(QHideEvent *hideEvent) override; |
78 | void changeEvent(QEvent *changeEvent) override; |
79 | void closeEvent(QCloseEvent *closeEvent) override; |
80 | void leaveEvent(QEvent *leaveEvent) override; |
81 | void resizeEvent(QResizeEvent *resizeEvent) override; |
82 | void timerEvent(QTimerEvent *timerEvent) override; |
83 | void moveEvent(QMoveEvent *moveEvent) override; |
84 | void paintEvent(QPaintEvent *paintEvent) override; |
85 | void mousePressEvent(QMouseEvent *mouseEvent) override; |
86 | void mouseDoubleClickEvent(QMouseEvent *mouseEvent) override; |
87 | void mouseReleaseEvent(QMouseEvent *mouseEvent) override; |
88 | void mouseMoveEvent(QMouseEvent *mouseEvent) override; |
89 | void keyPressEvent(QKeyEvent *keyEvent) override; |
90 | #ifndef QT_NO_CONTEXTMENU |
91 | void (QContextMenuEvent *) override; |
92 | #endif |
93 | void focusInEvent(QFocusEvent *focusInEvent) override; |
94 | void focusOutEvent(QFocusEvent *focusOutEvent) override; |
95 | void childEvent(QChildEvent *childEvent) override; |
96 | |
97 | private: |
98 | Q_DISABLE_COPY(QMdiSubWindow) |
99 | Q_DECLARE_PRIVATE(QMdiSubWindow) |
100 | Q_PRIVATE_SLOT(d_func(), void _q_updateStaysOnTopHint()) |
101 | Q_PRIVATE_SLOT(d_func(), void _q_enterInteractiveMode()) |
102 | Q_PRIVATE_SLOT(d_func(), void _q_processFocusChanged(QWidget *, QWidget *)) |
103 | friend class QMdiAreaPrivate; |
104 | #if QT_CONFIG(tabbar) |
105 | friend class QMdiAreaTabBar; |
106 | #endif |
107 | friend class QMdi::ControlContainer; |
108 | }; |
109 | |
110 | Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiSubWindow::SubWindowOptions) |
111 | |
112 | QT_END_NAMESPACE |
113 | |
114 | #endif // QMDISUBWINDOW_H |
115 | |