⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmdisubwindow_p.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QMDISUBWINDOW_P_H#define QMDISUBWINDOW_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include "qmdisubwindow.h"#ifndef QT_NO_MDIAREA#include <QStyle>#include <QStyleOptionTitleBar>#include <QMenuBar>#include <QSizeGrip>#include <QPointer>#include <QDebug>#include <private/qwidget_p.h>class QVBoxLayout;class QMouseEvent;template<typename T>class ControlElement : public T{public:    ControlElement(QMdiSubWindow *child) : T(0)    {        Q_ASSERT(child);        mdiChild = child;    }    void *qt_metacast(const char *classname)    {        if (classname && strcmp(classname, "ControlElement") == 0)            return this;        return 0;    }    QPointer<QMdiSubWindow> mdiChild;};class ControlContainer : public QObject{public:    ControlContainer(QMdiSubWindow *mdiChild);    ~ControlContainer();#ifndef QT_NO_MENUBAR    void showButtonsInMenuBar(QMenuBar *menuBar);    void removeButtonsFromMenuBar(QMenuBar *menuBar = 0);    QMenuBar *menuBar() const { return m_menuBar; }#endif    void updateWindowIcon(const QIcon &windowIcon);    QWidget *controllerWidget() const { return m_controllerWidget; }    QWidget *systemMenuLabel() const { return m_menuLabel; }private:    QPointer<QWidget> previousLeft;    QPointer<QWidget> previousRight;#ifndef QT_NO_MENUBAR    QPointer<QMenuBar> m_menuBar;#endif    QPointer<QWidget> m_controllerWidget;    QPointer<QWidget> m_menuLabel;    QPointer<QMdiSubWindow> mdiChild;};class QMdiSubWindowPrivate : public QWidgetPrivate{    Q_DECLARE_PUBLIC(QMdiSubWindow)public:    // Enums and typedefs.    enum Operation {        None,        Move,        TopResize,        BottomResize,        LeftResize,        RightResize,        TopLeftResize,        TopRightResize,        BottomLeftResize,        BottomRightResize    };    enum ChangeFlag {        HMove = 0x01,        VMove = 0x02,        HResize = 0x04,        VResize = 0x08,        HResizeReverse = 0x10,        VResizeReverse = 0x20    };    enum WindowStateAction {        RestoreAction,        MoveAction,        ResizeAction,        MinimizeAction,        MaximizeAction,        StayOnTopAction,        CloseAction,        /* Add new states _above_ this line! */        NumWindowStateActions    };    struct OperationInfo {        uint changeFlags;        Qt::CursorShape cursorShape;        QRegion region;        bool hover;        OperationInfo(uint changeFlags, Qt::CursorShape cursorShape, bool hover = true)            : changeFlags(changeFlags),              cursorShape(cursorShape),              hover(hover)        {}    };    typedef QMap<Operation, OperationInfo> OperationInfoMap;    QMdiSubWindowPrivate();    // Variables.    QPointer<QWidget> baseWidget;    QPointer<QWidget> restoreFocusWidget;    QPointer<ControlContainer> controlContainer;#ifndef QT_NO_SIZEGRIP    QPointer<QSizeGrip> sizeGrip;#endif#ifndef QT_NO_RUBBERBAND    QRubberBand *rubberBand;#endif    QPoint mousePressPosition;    QRect oldGeometry;    QSize internalMinimumSize;    QSize userMinimumSize;    QSize restoreSize;    bool resizeEnabled;    bool moveEnabled;    bool isInInteractiveMode;#ifndef QT_NO_RUBBERBAND    bool isInRubberBandMode;#endif    bool isShadeMode;    bool ignoreWindowTitleChange;    bool ignoreNextActivationEvent;    bool activationEnabled;    bool isShadeRequestFromMinimizeMode;    bool isMaximizeMode;    bool isWidgetHiddenByUs;    bool isActive;    bool isExplicitlyDeactivated;    int keyboardSingleStep;    int keyboardPageStep;    int resizeTimerId;    Operation currentOperation;    QStyle::SubControl hoveredSubControl;    QStyle::SubControl activeSubControl;    Qt::FocusReason focusInReason;    OperationInfoMap operationMap;    QPointer<QMenu> systemMenu;#ifndef QT_NO_ACTIONS    QPointer<QAction> actions[NumWindowStateActions];#endif    QMdiSubWindow::SubWindowOptions options;    QString lastChildWindowTitle;    QPalette titleBarPalette;    QString windowTitle;    QFont font;    QIcon menuIcon;    QStyleOptionTitleBar cachedStyleOptions;    // Slots.    void _q_updateStaysOnTopHint();    void _q_enterInteractiveMode();    void _q_processFocusChanged(QWidget *old, QWidget *now);    // Functions.    void leaveInteractiveMode();    void removeBaseWidget();    void initOperationMap();#ifndef QT_NO_MENU    void createSystemMenu();#endif    void updateCursor();    void updateDirtyRegions();    void updateGeometryConstraints();    void updateMask();    void setNewGeometry(const QPoint &pos);    void setMinimizeMode();    void setNormalMode();    void setMaximizeMode();    void setActive(bool activate);    void processClickedSubControl();    QRegion getRegion(Operation operation) const;    Operation getOperation(const QPoint &pos) const;    QStyleOptionTitleBar titleBarOptions() const;    void ensureWindowState(Qt::WindowState state);    int titleBarHeight(const QStyleOptionTitleBar &options) const;    void sizeParameters(int *margin, int *minWidth) const;    bool drawTitleBarWhenMaximized() const;#ifndef QT_NO_MENUBAR    void showButtonsInMenuBar(QMenuBar *menuBar);    void removeButtonsFromMenuBar();#endif    void updateWindowTitle(bool requestFromChild);#ifndef QT_NO_RUBBERBAND    void enterRubberBandMode();    void leaveRubberBandMode();#endif    QPalette desktopPalette() const;    void updateActions();    void setFocusWidget();    void restoreFocus();    void setWindowFlags(Qt::WindowFlags windowFlags);    void setVisible(WindowStateAction, bool visible = true);#ifndef QT_NO_ACTION    void setEnabled(WindowStateAction, bool enable = true);#ifndef QT_NO_MENU    void addToSystemMenu(WindowStateAction, const QString &text, const char *slot);#endif#endif // QT_NO_ACTION    QSize iconSize() const;#ifndef QT_NO_SIZEGRIP    void setSizeGrip(QSizeGrip *sizeGrip);    void setSizeGripVisible(bool visible = true) const;#endif    void updateInternalWindowTitle();    inline int titleBarHeight() const    {        Q_Q(const QMdiSubWindow);        if (!q->parent() || q->windowFlags() & Qt::FramelessWindowHint            || (q->isMaximized() && !drawTitleBarWhenMaximized())) {            return 0;        }        QStyleOptionTitleBar options = titleBarOptions();        int height = options.rect.height();        if (hasBorder(options))            height += q->isMinimized() ? 8 : 4;        return height;    }    inline QStyle::SubControl getSubControl(const QPoint &pos) const    {        Q_Q(const QMdiSubWindow);        QStyleOptionTitleBar titleBarOptions = this->titleBarOptions();        return q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &titleBarOptions, pos, q);    }    inline void setNewGeometry(QRect *geometry)    {        Q_Q(QMdiSubWindow);        Q_ASSERT(q->parent());        geometry->setSize(geometry->size().expandedTo(internalMinimumSize));#ifndef QT_NO_RUBBERBAND        if (isInRubberBandMode)            rubberBand->setGeometry(*geometry);        else#endif            q->setGeometry(*geometry);    }    inline bool hasBorder(const QStyleOptionTitleBar &options) const    {        Q_Q(const QMdiSubWindow);        return !q->style()->styleHint(QStyle::SH_TitleBar_NoBorder, &options, q);    }    inline bool autoRaise() const    {        Q_Q(const QMdiSubWindow);        return q->style()->styleHint(QStyle::SH_TitleBar_AutoRaise, 0, q);    }    inline bool isResizeOperation() const    {        return currentOperation != None && currentOperation != Move;    }    inline bool isMoveOperation() const    {        return currentOperation == Move;    }};#endif // QT_NO_MDIAREA#endif // QMDISUBWINDOW_P_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -