qlayout.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:7k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QLAYOUT_H
  38. #define QLAYOUT_H
  39. #include <QtCore/qobject.h>
  40. #include <QtGui/qlayoutitem.h>
  41. #include <QtGui/qsizepolicy.h>
  42. #include <QtCore/qrect.h>
  43. #include <limits.h>
  44. QT_BEGIN_HEADER
  45. QT_BEGIN_NAMESPACE
  46. QT_MODULE(Gui)
  47. class QLayout;
  48. class QSize;
  49. #ifdef QT3_SUPPORT
  50. class Q_GUI_EXPORT QLayoutIterator
  51. {
  52. public:
  53.     inline QT3_SUPPORT_CONSTRUCTOR QLayoutIterator(QLayout *i) : layout(i), index(0) {}
  54.     inline QLayoutIterator(const QLayoutIterator &i)
  55.         : layout(i.layout), index(i.index) {}
  56.     inline QLayoutIterator &operator=(const QLayoutIterator &i) {
  57.         layout = i.layout;
  58.         index = i.index;
  59.         return *this;
  60.     }
  61.     inline QT3_SUPPORT QLayoutItem *operator++();
  62.     inline QT3_SUPPORT QLayoutItem *current();
  63.     inline QT3_SUPPORT QLayoutItem *takeCurrent();
  64.     inline QT3_SUPPORT void deleteCurrent();
  65. private:
  66.     // hack to avoid deprecated warning
  67.     friend class QLayout;
  68.     inline QLayoutIterator(QLayout *i, bool) : layout(i), index(0) {}
  69.     QLayout *layout;
  70.     int index;
  71. };
  72. #endif
  73. class QLayoutPrivate;
  74. class Q_GUI_EXPORT QLayout : public QObject, public QLayoutItem
  75. {
  76.     Q_OBJECT
  77.     Q_DECLARE_PRIVATE(QLayout)
  78.     Q_ENUMS(SizeConstraint)
  79.     Q_PROPERTY(int margin READ margin WRITE setMargin)
  80.     Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
  81.     Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint)
  82. public:
  83.     enum SizeConstraint {
  84.         SetDefaultConstraint,
  85.         SetNoConstraint,
  86.         SetMinimumSize,
  87.         SetFixedSize,
  88.         SetMaximumSize,
  89.         SetMinAndMaxSize
  90. #if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
  91.         , Auto = SetDefaultConstraint,
  92.         FreeResize = SetNoConstraint,
  93.         Minimum = SetMinimumSize,
  94.         Fixed = SetFixedSize
  95. #endif
  96.     };
  97.     QLayout(QWidget *parent);
  98.     QLayout();
  99.     ~QLayout();
  100.     int margin() const;
  101.     int spacing() const;
  102.     void setMargin(int);
  103.     void setSpacing(int);
  104.     void setContentsMargins(int left, int top, int right, int bottom);
  105.     void getContentsMargins(int *left, int *top, int *right, int *bottom) const;
  106.     QRect contentsRect() const;
  107.     bool setAlignment(QWidget *w, Qt::Alignment alignment);
  108.     bool setAlignment(QLayout *l, Qt::Alignment alignment);
  109. #ifdef Q_NO_USING_KEYWORD
  110.     inline void setAlignment(Qt::Alignment alignment) { QLayoutItem::setAlignment(alignment); }
  111. #else
  112.     using QLayoutItem::setAlignment;
  113. #endif
  114.     void setSizeConstraint(SizeConstraint);
  115.     SizeConstraint sizeConstraint() const;
  116. #ifdef QT3_SUPPORT
  117.     inline QT3_SUPPORT void setResizeMode(SizeConstraint s) {setSizeConstraint(s);}
  118.     inline QT3_SUPPORT SizeConstraint resizeMode() const {return sizeConstraint();}
  119. #endif
  120.     void setMenuBar(QWidget *w);
  121.     QWidget *menuBar() const;
  122.     QWidget *parentWidget() const;
  123.     void invalidate();
  124.     QRect geometry() const;
  125.     bool activate();
  126.     void update();
  127.     void addWidget(QWidget *w);
  128.     virtual void addItem(QLayoutItem *) = 0;
  129.     void removeWidget(QWidget *w);
  130.     void removeItem(QLayoutItem *);
  131.     Qt::Orientations expandingDirections() const;
  132.     QSize minimumSize() const;
  133.     QSize maximumSize() const;
  134.     virtual void setGeometry(const QRect&);
  135.     virtual QLayoutItem *itemAt(int index) const = 0;
  136.     virtual QLayoutItem *takeAt(int index) = 0;
  137.     virtual int indexOf(QWidget *) const;
  138.     virtual int count() const = 0;
  139.     bool isEmpty() const;
  140.     int totalHeightForWidth(int w) const;
  141.     QSize totalMinimumSize() const;
  142.     QSize totalMaximumSize() const;
  143.     QSize totalSizeHint() const;
  144.     QLayout *layout();
  145.     void setEnabled(bool);
  146.     bool isEnabled() const;
  147. #ifdef QT3_SUPPORT
  148.     QT3_SUPPORT void freeze(int w=0, int h=0);
  149.     QT3_SUPPORT bool isTopLevel() const;
  150. #endif
  151.     static QSize closestAcceptableSize(const QWidget *w, const QSize &s);
  152. protected:
  153.     void widgetEvent(QEvent *);
  154.     void childEvent(QChildEvent *e);
  155.     void addChildLayout(QLayout *l);
  156.     void addChildWidget(QWidget *w);
  157. #ifdef QT3_SUPPORT
  158.     QT3_SUPPORT void deleteAllItems();
  159. #endif
  160.     QRect alignmentRect(const QRect&) const;
  161. protected:
  162.     QLayout(QLayoutPrivate &d, QLayout*, QWidget*);
  163. private:
  164.     Q_DISABLE_COPY(QLayout)
  165.     static void activateRecursiveHelper(QLayoutItem *item);
  166.     friend class QApplicationPrivate;
  167.     friend class QWidget;
  168. #ifdef QT3_SUPPORT
  169. public:
  170.     QT3_SUPPORT_CONSTRUCTOR QLayout(QWidget *parent, int margin, int spacing = -1,
  171.                              const char *name = 0);
  172.     QT3_SUPPORT_CONSTRUCTOR QLayout(QLayout *parentLayout, int spacing = -1, const char *name = 0);
  173.     QT3_SUPPORT_CONSTRUCTOR QLayout(int spacing, const char *name = 0);
  174.     inline QT3_SUPPORT QWidget *mainWidget() const { return parentWidget(); }
  175.     inline QT3_SUPPORT void remove(QWidget *w) { removeWidget(w); }
  176.     inline QT3_SUPPORT void add(QWidget *w) { addWidget(w); }
  177.     QT3_SUPPORT void setAutoAdd(bool a);
  178.     QT3_SUPPORT bool autoAdd() const;
  179.     inline QT3_SUPPORT QLayoutIterator iterator() { return QLayoutIterator(this,true); }
  180.     inline QT3_SUPPORT int defaultBorder() const { return spacing(); }
  181. #endif
  182. };
  183. #ifdef QT3_SUPPORT
  184. inline QLayoutItem *QLayoutIterator::operator++() { return layout->itemAt(++index); }
  185. inline QLayoutItem *QLayoutIterator::current() { return layout->itemAt(index); }
  186. inline QLayoutItem *QLayoutIterator::takeCurrent() { return layout->takeAt(index); }
  187. inline void QLayoutIterator::deleteCurrent() { delete  layout->takeAt(index); }
  188. #endif
  189. //### support old includes
  190. #if 1 //def QT3_SUPPORT
  191. QT_BEGIN_INCLUDE_NAMESPACE
  192. #include <QtGui/qboxlayout.h>
  193. #include <QtGui/qgridlayout.h>
  194. QT_END_INCLUDE_NAMESPACE
  195. #endif
  196. QT_END_NAMESPACE
  197. QT_END_HEADER
  198. #endif // QLAYOUT_H