00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef QWT_DYNGRID_LAYOUT_H
00011
#define QWT_DYNGRID_LAYOUT_H
00012
00013
#include <qlayout.h>
00014
#include <qsize.h>
00015
#include "qwt_array.h"
00016
#include <qvaluelist.h>
00017
#include "qwt_global.h"
00018
00019
class QwtDynGridLayoutPrivate;
00020
00030 class QWT_EXPORT QwtDynGridLayout :
public QLayout
00031 {
00032 Q_OBJECT
00033
public:
00034 QwtDynGridLayout(QWidget *,
int margin=0,
00035
int space=-1,
const char *name = 0);
00036 QwtDynGridLayout(QLayout *,
int space=-1,
const char * name = 0 );
00037 QwtDynGridLayout(
int space=-1,
const char * name=0 );
00038
00039
virtual ~QwtDynGridLayout();
00040
00041
virtual void invalidate();
00042
00043
void setMaxCols(uint maxCols);
00044 uint maxCols()
const;
00045
00046 uint numRows ()
const;
00047 uint numCols ()
const;
00048
00049
virtual void addItem(QLayoutItem *);
00050
virtual QLayoutIterator iterator();
00051
00052
virtual int maxItemWidth()
const;
00053
00054
virtual void setGeometry(
const QRect &rect);
00055
00056
virtual bool hasHeightForWidth()
const;
00057
virtual int heightForWidth(
int)
const;
00058
00059
virtual QSize sizeHint()
const;
00060
00061
void setExpanding(QSizePolicy::ExpandData);
00062
virtual QSizePolicy::ExpandData expanding()
const;
00063
00064
virtual bool isEmpty()
const;
00065 uint itemCount()
const;
00066
00067
virtual uint columnsForWidth(
int width)
const;
00068
00069 QValueList<QRect> layoutItems(
const QRect &, uint numCols)
const;
00070
00071
protected:
00072
00073
void layoutGrid(uint numCols,
00074 QwtArray<int>& rowHeight, QwtArray<int>& colWidth)
const;
00075
void stretchGrid(
const QRect &rect, uint numCols,
00076 QwtArray<int>& rowHeight, QwtArray<int>& colWidth)
const;
00077
00078
00079
private:
00080
void init();
00081
int maxRowWidth(
int numCols)
const;
00082
void updateLayoutCache();
00083
00084 uint d_maxCols;
00085 uint d_numRows;
00086 uint d_numCols;
00087
00088 QSizePolicy::ExpandData d_expanding;
00089 QwtDynGridLayoutPrivate *d_layoutData;
00090 };
00091
00092
#endif
00093
00094
00095
00096
00097
00098