// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QMDISUBWINDOW_H #define QMDISUBWINDOW_H #include #include QT_REQUIRE_CONFIG(mdiarea); QT_BEGIN_NAMESPACE class QMenu; class QMdiArea; namespace QMdi { class ControlContainer; } class QMdiSubWindowPrivate; class Q_WIDGETS_EXPORT QMdiSubWindow : public QWidget { Q_OBJECT Q_PROPERTY(int keyboardSingleStep READ keyboardSingleStep WRITE setKeyboardSingleStep) Q_PROPERTY(int keyboardPageStep READ keyboardPageStep WRITE setKeyboardPageStep) public: enum SubWindowOption { AllowOutsideAreaHorizontally = 0x1, // internal AllowOutsideAreaVertically = 0x2, // internal RubberBandResize = 0x4, RubberBandMove = 0x8 }; Q_DECLARE_FLAGS(SubWindowOptions, SubWindowOption) QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()); ~QMdiSubWindow(); QSize sizeHint() const override; QSize minimumSizeHint() const override; void setWidget(QWidget *widget); QWidget *widget() const; QWidget *maximizedButtonsWidget() const; // internal QWidget *maximizedSystemMenuIconWidget() const; // internal bool isShaded() const; void setOption(SubWindowOption option, bool on = true); bool testOption(SubWindowOption) const; void setKeyboardSingleStep(int step); int keyboardSingleStep() const; void setKeyboardPageStep(int step); int keyboardPageStep() const; #if QT_CONFIG(menu) void setSystemMenu(QMenu *systemMenu); QMenu *systemMenu() const; #endif QMdiArea *mdiArea() const; Q_SIGNALS: void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); void aboutToActivate(); public Q_SLOTS: #if QT_CONFIG(menu) void showSystemMenu(); #endif void showShaded(); protected: bool eventFilter(QObject *object, QEvent *event) override; bool event(QEvent *event) override; void showEvent(QShowEvent *showEvent) override; void hideEvent(QHideEvent *hideEvent) override; void changeEvent(QEvent *changeEvent) override; void closeEvent(QCloseEvent *closeEvent) override; void leaveEvent(QEvent *leaveEvent) override; void resizeEvent(QResizeEvent *resizeEvent) override; void timerEvent(QTimerEvent *timerEvent) override; void moveEvent(QMoveEvent *moveEvent) override; void paintEvent(QPaintEvent *paintEvent) override; void mousePressEvent(QMouseEvent *mouseEvent) override; void mouseDoubleClickEvent(QMouseEvent *mouseEvent) override; void mouseReleaseEvent(QMouseEvent *mouseEvent) override; void mouseMoveEvent(QMouseEvent *mouseEvent) override; void keyPressEvent(QKeyEvent *keyEvent) override; #ifndef QT_NO_CONTEXTMENU void contextMenuEvent(QContextMenuEvent *contextMenuEvent) override; #endif void focusInEvent(QFocusEvent *focusInEvent) override; void focusOutEvent(QFocusEvent *focusOutEvent) override; void childEvent(QChildEvent *childEvent) override; private: Q_DISABLE_COPY(QMdiSubWindow) Q_DECLARE_PRIVATE(QMdiSubWindow) Q_PRIVATE_SLOT(d_func(), void _q_updateStaysOnTopHint()) Q_PRIVATE_SLOT(d_func(), void _q_enterInteractiveMode()) Q_PRIVATE_SLOT(d_func(), void _q_processFocusChanged(QWidget *, QWidget *)) friend class QMdiAreaPrivate; friend class QMdiArea; #if QT_CONFIG(tabbar) friend class QMdiAreaTabBar; #endif friend class QMdi::ControlContainer; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiSubWindow::SubWindowOptions) QT_END_NAMESPACE #endif // QMDISUBWINDOW_H