qlayout.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:7k
- /****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info@nokia.com)
- **
- ** This file is part of the QtGui module of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 3.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://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, 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.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales@nokia.com.
- **
- ****************************************************************************/
- #ifndef QLAYOUT_H
- #define QLAYOUT_H
- #include <QtCore/qobject.h>
- #include <QtGui/qlayoutitem.h>
- #include <QtGui/qsizepolicy.h>
- #include <QtCore/qrect.h>
- #include <limits.h>
- QT_BEGIN_HEADER
- QT_BEGIN_NAMESPACE
- QT_MODULE(Gui)
- class QLayout;
- class QSize;
- #ifdef QT3_SUPPORT
- class Q_GUI_EXPORT QLayoutIterator
- {
- public:
- inline QT3_SUPPORT_CONSTRUCTOR QLayoutIterator(QLayout *i) : layout(i), index(0) {}
- inline QLayoutIterator(const QLayoutIterator &i)
- : layout(i.layout), index(i.index) {}
- inline QLayoutIterator &operator=(const QLayoutIterator &i) {
- layout = i.layout;
- index = i.index;
- return *this;
- }
- inline QT3_SUPPORT QLayoutItem *operator++();
- inline QT3_SUPPORT QLayoutItem *current();
- inline QT3_SUPPORT QLayoutItem *takeCurrent();
- inline QT3_SUPPORT void deleteCurrent();
- private:
- // hack to avoid deprecated warning
- friend class QLayout;
- inline QLayoutIterator(QLayout *i, bool) : layout(i), index(0) {}
- QLayout *layout;
- int index;
- };
- #endif
- class QLayoutPrivate;
- class Q_GUI_EXPORT QLayout : public QObject, public QLayoutItem
- {
- Q_OBJECT
- Q_DECLARE_PRIVATE(QLayout)
- Q_ENUMS(SizeConstraint)
- Q_PROPERTY(int margin READ margin WRITE setMargin)
- Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
- Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint)
- public:
- enum SizeConstraint {
- SetDefaultConstraint,
- SetNoConstraint,
- SetMinimumSize,
- SetFixedSize,
- SetMaximumSize,
- SetMinAndMaxSize
- #if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
- , Auto = SetDefaultConstraint,
- FreeResize = SetNoConstraint,
- Minimum = SetMinimumSize,
- Fixed = SetFixedSize
- #endif
- };
- QLayout(QWidget *parent);
- QLayout();
- ~QLayout();
- int margin() const;
- int spacing() const;
- void setMargin(int);
- void setSpacing(int);
- void setContentsMargins(int left, int top, int right, int bottom);
- void getContentsMargins(int *left, int *top, int *right, int *bottom) const;
- QRect contentsRect() const;
- bool setAlignment(QWidget *w, Qt::Alignment alignment);
- bool setAlignment(QLayout *l, Qt::Alignment alignment);
- #ifdef Q_NO_USING_KEYWORD
- inline void setAlignment(Qt::Alignment alignment) { QLayoutItem::setAlignment(alignment); }
- #else
- using QLayoutItem::setAlignment;
- #endif
- void setSizeConstraint(SizeConstraint);
- SizeConstraint sizeConstraint() const;
- #ifdef QT3_SUPPORT
- inline QT3_SUPPORT void setResizeMode(SizeConstraint s) {setSizeConstraint(s);}
- inline QT3_SUPPORT SizeConstraint resizeMode() const {return sizeConstraint();}
- #endif
- void setMenuBar(QWidget *w);
- QWidget *menuBar() const;
- QWidget *parentWidget() const;
- void invalidate();
- QRect geometry() const;
- bool activate();
- void update();
- void addWidget(QWidget *w);
- virtual void addItem(QLayoutItem *) = 0;
- void removeWidget(QWidget *w);
- void removeItem(QLayoutItem *);
- Qt::Orientations expandingDirections() const;
- QSize minimumSize() const;
- QSize maximumSize() const;
- virtual void setGeometry(const QRect&);
- virtual QLayoutItem *itemAt(int index) const = 0;
- virtual QLayoutItem *takeAt(int index) = 0;
- virtual int indexOf(QWidget *) const;
- virtual int count() const = 0;
- bool isEmpty() const;
- int totalHeightForWidth(int w) const;
- QSize totalMinimumSize() const;
- QSize totalMaximumSize() const;
- QSize totalSizeHint() const;
- QLayout *layout();
- void setEnabled(bool);
- bool isEnabled() const;
- #ifdef QT3_SUPPORT
- QT3_SUPPORT void freeze(int w=0, int h=0);
- QT3_SUPPORT bool isTopLevel() const;
- #endif
- static QSize closestAcceptableSize(const QWidget *w, const QSize &s);
- protected:
- void widgetEvent(QEvent *);
- void childEvent(QChildEvent *e);
- void addChildLayout(QLayout *l);
- void addChildWidget(QWidget *w);
- #ifdef QT3_SUPPORT
- QT3_SUPPORT void deleteAllItems();
- #endif
- QRect alignmentRect(const QRect&) const;
- protected:
- QLayout(QLayoutPrivate &d, QLayout*, QWidget*);
- private:
- Q_DISABLE_COPY(QLayout)
- static void activateRecursiveHelper(QLayoutItem *item);
- friend class QApplicationPrivate;
- friend class QWidget;
- #ifdef QT3_SUPPORT
- public:
- QT3_SUPPORT_CONSTRUCTOR QLayout(QWidget *parent, int margin, int spacing = -1,
- const char *name = 0);
- QT3_SUPPORT_CONSTRUCTOR QLayout(QLayout *parentLayout, int spacing = -1, const char *name = 0);
- QT3_SUPPORT_CONSTRUCTOR QLayout(int spacing, const char *name = 0);
- inline QT3_SUPPORT QWidget *mainWidget() const { return parentWidget(); }
- inline QT3_SUPPORT void remove(QWidget *w) { removeWidget(w); }
- inline QT3_SUPPORT void add(QWidget *w) { addWidget(w); }
- QT3_SUPPORT void setAutoAdd(bool a);
- QT3_SUPPORT bool autoAdd() const;
- inline QT3_SUPPORT QLayoutIterator iterator() { return QLayoutIterator(this,true); }
- inline QT3_SUPPORT int defaultBorder() const { return spacing(); }
- #endif
- };
- #ifdef QT3_SUPPORT
- inline QLayoutItem *QLayoutIterator::operator++() { return layout->itemAt(++index); }
- inline QLayoutItem *QLayoutIterator::current() { return layout->itemAt(index); }
- inline QLayoutItem *QLayoutIterator::takeCurrent() { return layout->takeAt(index); }
- inline void QLayoutIterator::deleteCurrent() { delete layout->takeAt(index); }
- #endif
- //### support old includes
- #if 1 //def QT3_SUPPORT
- QT_BEGIN_INCLUDE_NAMESPACE
- #include <QtGui/qboxlayout.h>
- #include <QtGui/qgridlayout.h>
- QT_END_INCLUDE_NAMESPACE
- #endif
- QT_END_NAMESPACE
- QT_END_HEADER
- #endif // QLAYOUT_H