Quark  0.1
OverlayLayout.h++
Go to the documentation of this file.
1 #ifndef __libquark_gui_OverlayLayout_hxx
2 #define __libquark_gui_OverlayLayout_hxx
3 
4 #include <QLayout>
5 #include <QList>
6 #include <QScopedPointer>
7 #include <QWidgetItem>
8 
9 #include <quark/Quark.h++>
10 
11 namespace quark {
12 namespace gui {
13 
14 class LIBQUARK_API OverlayLayout : public QLayout
15 {
16  public:
17 
18  enum Position { Left, Top, Bottom, Right, Center };
19 
20  explicit OverlayLayout(QWidget *parent);
21  virtual ~OverlayLayout();
22 
23  virtual void addItem(QLayoutItem *item);
24  void addWidget(QWidget *widget, Position position);
25  virtual Qt::Orientations expandingDirections() const;
26  virtual bool hasHeightForWidth() const;
27  virtual int count() const;
28  virtual QLayoutItem *itemAt(int index) const;
29  virtual QSize minimumSize() const;
30  virtual void setGeometry(const QRect &rect);
31  virtual QSize sizeHint() const;
32  virtual QLayoutItem *takeAt(int index);
33 
34  void add(QLayoutItem *item, Position position);
35 
36  private:
37 
38  struct ItemWrapper
39  {
40  ItemWrapper(QLayoutItem *item, Position position)
41  : item(item), position(position)
42  { }
43 
44  ~ItemWrapper()
45  {
46  }
47 
48  QLayoutItem *release() {
49  return item.take();
50  }
51 
52  QScopedPointer<QLayoutItem> item;
53  Position position;
54  };
55 
56  enum SizeType { MinimumSize, SizeHint };
57  QSize calculateSize(SizeType sizeType) const;
58 
59  QList<ItemWrapper *> _list;
60 };
61 
62 } // namespace gui
63 } // namespace quark
64 
65 #endif // __libquark_gui_OverlayLayout_hxx
Definition: OverlayLayout.h++:18
Definition: BarChartView.h++:6
Position
Definition: OverlayLayout.h++:18
#define LIBQUARK_API
Definition: Quark.h++:18
Definition: OverlayLayout.h++:14