Qwt User's Guide  5.2.3
qwt_dyngrid_layout.h
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * Qwt Widget Library
3  * Copyright (C) 1997 Josef Wilgen
4  * Copyright (C) 2002 Uwe Rathmann
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the Qwt License, Version 1.0
8  *****************************************************************************/
9 
10 #ifndef QWT_DYNGRID_LAYOUT_H
11 #define QWT_DYNGRID_LAYOUT_H
12 
13 #include <qlayout.h>
14 #include <qsize.h>
15 #if QT_VERSION >= 0x040000
16 #include <qlist.h>
17 #else
18 #include <qvaluelist.h>
19 #endif
20 #include "qwt_global.h"
21 #include "qwt_array.h"
22 
32 class QWT_EXPORT QwtDynGridLayout : public QLayout
33 {
34  Q_OBJECT
35 public:
36  explicit QwtDynGridLayout(QWidget *, int margin = 0, int space = -1);
37 #if QT_VERSION < 0x040000
38  explicit QwtDynGridLayout(QLayout *, int space = -1);
39 #endif
40  explicit QwtDynGridLayout(int space = -1);
41 
42  virtual ~QwtDynGridLayout();
43 
44  virtual void invalidate();
45 
46  void setMaxCols(uint maxCols);
47  uint maxCols() const;
48 
49  uint numRows () const;
50  uint numCols () const;
51 
52  virtual void addItem(QLayoutItem *);
53 
54 #if QT_VERSION >= 0x040000
55  virtual QLayoutItem *itemAt( int index ) const;
56  virtual QLayoutItem *takeAt( int index );
57  virtual int count() const;
58 
59  void setExpandingDirections(Qt::Orientations);
60  virtual Qt::Orientations expandingDirections() const;
61  QList<QRect> layoutItems(const QRect &, uint numCols) const;
62 #else
63  virtual QLayoutIterator iterator();
64 
65  void setExpanding(QSizePolicy::ExpandData);
66  virtual QSizePolicy::ExpandData expanding() const;
67  QValueList<QRect> layoutItems(const QRect &, uint numCols) const;
68 #endif
69 
70  virtual int maxItemWidth() const;
71 
72  virtual void setGeometry(const QRect &rect);
73 
74  virtual bool hasHeightForWidth() const;
75  virtual int heightForWidth(int) const;
76 
77  virtual QSize sizeHint() const;
78 
79  virtual bool isEmpty() const;
80  uint itemCount() const;
81 
82  virtual uint columnsForWidth(int width) const;
83 
84 protected:
85 
86  void layoutGrid(uint numCols,
87  QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const;
88  void stretchGrid(const QRect &rect, uint numCols,
89  QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const;
90 
91 
92 private:
93  void init();
94  int maxRowWidth(int numCols) const;
95  void updateLayoutCache();
96 
97 #if QT_VERSION < 0x040000
98 // xlC 5.1, the IBM/AIX C++ compiler, needs it to be public
99 public:
100 #endif
101  class PrivateData;
102 
103 private:
104  PrivateData *d_data;
105 };
106 
107 #endif