Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef QLAYOUT_H
00043 #define QLAYOUT_H
00044
00045 #include <QtCore/qobject.h>
00046 #include <QtGui/qlayoutitem.h>
00047 #include <QtGui/qsizepolicy.h>
00048 #include <QtCore/qrect.h>
00049 #include <QtCore/qmargins.h>
00050
00051 #include <limits.h>
00052
00053 QT_BEGIN_HEADER
00054
00055 QT_BEGIN_NAMESPACE
00056
00057 QT_MODULE(Gui)
00058
00059 class QLayout;
00060 class QSize;
00061
00062 #ifdef QT3_SUPPORT
00063 class Q_GUI_EXPORT QLayoutIterator
00064 {
00065 public:
00066 inline QT3_SUPPORT_CONSTRUCTOR QLayoutIterator(QLayout *i) : layout(i), index(0) {}
00067 inline QLayoutIterator(const QLayoutIterator &i)
00068 : layout(i.layout), index(i.index) {}
00069 inline QLayoutIterator &operator=(const QLayoutIterator &i) {
00070 layout = i.layout;
00071 index = i.index;
00072 return *this;
00073 }
00074 inline QT3_SUPPORT QLayoutItem *operator++();
00075 inline QT3_SUPPORT QLayoutItem *current();
00076 inline QT3_SUPPORT QLayoutItem *takeCurrent();
00077 inline QT3_SUPPORT void deleteCurrent();
00078
00079 private:
00080
00081 friend class QLayout;
00082 inline QLayoutIterator(QLayout *i, bool) : layout(i), index(0) {}
00083 QLayout *layout;
00084 int index;
00085 };
00086 #endif
00087
00088 class QLayoutPrivate;
00089
00090 class Q_GUI_EXPORT QLayout : public QObject, public QLayoutItem
00091 {
00092 Q_OBJECT
00093 Q_DECLARE_PRIVATE(QLayout)
00094
00095 Q_ENUMS(SizeConstraint)
00096 Q_PROPERTY(int margin READ margin WRITE setMargin)
00097 Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
00098 Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint)
00099 public:
00100 enum SizeConstraint {
00101 SetDefaultConstraint,
00102 SetNoConstraint,
00103 SetMinimumSize,
00104 SetFixedSize,
00105 SetMaximumSize,
00106 SetMinAndMaxSize
00107 #if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
00108 , Auto = SetDefaultConstraint,
00109 FreeResize = SetNoConstraint,
00110 Minimum = SetMinimumSize,
00111 Fixed = SetFixedSize
00112 #endif
00113 };
00114
00115 QLayout(QWidget *parent);
00116 QLayout();
00117 ~QLayout();
00118
00119 int margin() const;
00120 int spacing() const;
00121
00122 void setMargin(int);
00123 void setSpacing(int);
00124
00125 void setContentsMargins(int left, int top, int right, int bottom);
00126 void setContentsMargins(const QMargins &margins);
00127 void getContentsMargins(int *left, int *top, int *right, int *bottom) const;
00128 QMargins contentsMargins() const;
00129 QRect contentsRect() const;
00130
00131 bool setAlignment(QWidget *w, Qt::Alignment alignment);
00132 bool setAlignment(QLayout *l, Qt::Alignment alignment);
00133 #ifdef Q_NO_USING_KEYWORD
00134 inline void setAlignment(Qt::Alignment alignment) { QLayoutItem::setAlignment(alignment); }
00135 #else
00136 using QLayoutItem::setAlignment;
00137 #endif
00138
00139 void setSizeConstraint(SizeConstraint);
00140 SizeConstraint sizeConstraint() const;
00141 #ifdef QT3_SUPPORT
00142 inline QT3_SUPPORT void setResizeMode(SizeConstraint s) {setSizeConstraint(s);}
00143 inline QT3_SUPPORT SizeConstraint resizeMode() const {return sizeConstraint();}
00144 #endif
00145 void setMenuBar(QWidget *w);
00146 QWidget *menuBar() const;
00147
00148 QWidget *parentWidget() const;
00149
00150 void invalidate();
00151 QRect geometry() const;
00152 bool activate();
00153 void update();
00154
00155 void addWidget(QWidget *w);
00156 virtual void addItem(QLayoutItem *) = 0;
00157
00158 void removeWidget(QWidget *w);
00159 void removeItem(QLayoutItem *);
00160
00161 Qt::Orientations expandingDirections() const;
00162 QSize minimumSize() const;
00163 QSize maximumSize() const;
00164 virtual void setGeometry(const QRect&);
00165 virtual QLayoutItem *itemAt(int index) const = 0;
00166 virtual QLayoutItem *takeAt(int index) = 0;
00167 virtual int indexOf(QWidget *) const;
00168 virtual int count() const = 0;
00169 bool isEmpty() const;
00170
00171 int totalHeightForWidth(int w) const;
00172 QSize totalMinimumSize() const;
00173 QSize totalMaximumSize() const;
00174 QSize totalSizeHint() const;
00175 QLayout *layout();
00176
00177 void setEnabled(bool);
00178 bool isEnabled() const;
00179
00180 #ifdef QT3_SUPPORT
00181 QT3_SUPPORT void freeze(int w=0, int h=0);
00182 QT3_SUPPORT bool isTopLevel() const;
00183 #endif
00184
00185 static QSize closestAcceptableSize(const QWidget *w, const QSize &s);
00186
00187 protected:
00188 void widgetEvent(QEvent *);
00189 void childEvent(QChildEvent *e);
00190 void addChildLayout(QLayout *l);
00191 void addChildWidget(QWidget *w);
00192 #ifdef QT3_SUPPORT
00193 QT3_SUPPORT void deleteAllItems();
00194 #endif
00195
00196 QRect alignmentRect(const QRect&) const;
00197 protected:
00198 QLayout(QLayoutPrivate &d, QLayout*, QWidget*);
00199
00200 private:
00201 Q_DISABLE_COPY(QLayout)
00202
00203 static void activateRecursiveHelper(QLayoutItem *item);
00204
00205 friend class QApplicationPrivate;
00206 friend class QWidget;
00207
00208 #ifdef QT3_SUPPORT
00209 public:
00210 QT3_SUPPORT_CONSTRUCTOR QLayout(QWidget *parent, int margin, int spacing = -1,
00211 const char *name = 0);
00212 QT3_SUPPORT_CONSTRUCTOR QLayout(QLayout *parentLayout, int spacing = -1, const char *name = 0);
00213 QT3_SUPPORT_CONSTRUCTOR QLayout(int spacing, const char *name = 0);
00214 inline QT3_SUPPORT QWidget *mainWidget() const { return parentWidget(); }
00215 inline QT3_SUPPORT void remove(QWidget *w) { removeWidget(w); }
00216 inline QT3_SUPPORT void add(QWidget *w) { addWidget(w); }
00217
00218 QT3_SUPPORT void setAutoAdd(bool a);
00219 QT3_SUPPORT bool autoAdd() const;
00220 inline QT3_SUPPORT QLayoutIterator iterator() { return QLayoutIterator(this,true); }
00221
00222 inline QT3_SUPPORT int defaultBorder() const { return spacing(); }
00223 #endif
00224 };
00225
00226 #ifdef QT3_SUPPORT
00227 inline QLayoutItem *QLayoutIterator::operator++() { return layout->itemAt(++index); }
00228 inline QLayoutItem *QLayoutIterator::current() { return layout->itemAt(index); }
00229 inline QLayoutItem *QLayoutIterator::takeCurrent() { return layout->takeAt(index); }
00230 inline void QLayoutIterator::deleteCurrent() { delete layout->takeAt(index); }
00231 #endif
00232
00233
00234 #if 1 //def QT3_SUPPORT
00235 QT_BEGIN_INCLUDE_NAMESPACE
00236 #include <QtGui/qboxlayout.h>
00237 #include <QtGui/qgridlayout.h>
00238 QT_END_INCLUDE_NAMESPACE
00239 #endif
00240
00241 QT_END_NAMESPACE
00242
00243 QT_END_HEADER
00244
00245 #endif // QLAYOUT_H