00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_DYNGRID_LAYOUT_H
00011 #define QWT_DYNGRID_LAYOUT_H
00012
00013 #include "qwt_global.h"
00014 #include <qlayout.h>
00015 #include <qsize.h>
00016 #include <qlist.h>
00017
00027 class QWT_EXPORT QwtDynGridLayout : public QLayout
00028 {
00029 Q_OBJECT
00030 public:
00031 explicit QwtDynGridLayout(QWidget *, int margin = 0, int space = -1);
00032 explicit QwtDynGridLayout(int space = -1);
00033
00034 virtual ~QwtDynGridLayout();
00035
00036 virtual void invalidate();
00037
00038 void setMaxCols(uint maxCols);
00039 uint maxCols() const;
00040
00041 uint numRows () const;
00042 uint numCols () const;
00043
00044 virtual void addItem(QLayoutItem *);
00045
00046 virtual QLayoutItem *itemAt( int index ) const;
00047 virtual QLayoutItem *takeAt( int index );
00048 virtual int count() const;
00049
00050 void setExpandingDirections(Qt::Orientations);
00051 virtual Qt::Orientations expandingDirections() const;
00052 QList<QRect> layoutItems(const QRect &, uint numCols) const;
00053
00054 virtual int maxItemWidth() const;
00055
00056 virtual void setGeometry(const QRect &rect);
00057
00058 virtual bool hasHeightForWidth() const;
00059 virtual int heightForWidth(int) const;
00060
00061 virtual QSize sizeHint() const;
00062
00063 virtual bool isEmpty() const;
00064 uint itemCount() const;
00065
00066 virtual uint columnsForWidth(int width) const;
00067
00068 protected:
00069
00070 void layoutGrid(uint numCols,
00071 QVector<int>& rowHeight, QVector<int>& colWidth) const;
00072 void stretchGrid(const QRect &rect, uint numCols,
00073 QVector<int>& rowHeight, QVector<int>& colWidth) const;
00074
00075
00076 private:
00077 void init();
00078 int maxRowWidth(int numCols) const;
00079 void updateLayoutCache();
00080
00081 class PrivateData;
00082
00083 private:
00084 PrivateData *d_data;
00085 };
00086
00087 #endif