pqHierarchicalGridLayout.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Sandia Corporation
3 // SPDX-License-Identifier: BSD-3-Clause
4 #ifndef pqHierarchicalGridLayout_h
5 #define pqHierarchicalGridLayout_h
6 
7 #include <QLayout>
8 #include <QScopedPointer> // for ivar
9 
10 #include "pqWidgetsModule.h" // for export macros
11 
39 {
40  Q_OBJECT
41  typedef QLayout Superclass;
42 
43 public:
44  pqHierarchicalGridLayout(QWidget* parent = nullptr);
45  ~pqHierarchicalGridLayout() override;
46 
48 
51  void addItem(QLayoutItem* item) override;
52  QLayoutItem* itemAt(int index) const override;
53  QLayoutItem* takeAt(int index) override;
54  int count() const override;
56 
58 
61  QSize minimumSize() const override;
62  void setGeometry(const QRect& rect) override;
63  QSize sizeHint() const override;
65 
67 
70  bool isLocationValid(int location) const;
72 
74 
77  void split(int location, Qt::Orientation direction, double splitFraction);
78  void splitAny(int location, double splitFraction);
79  void splitVertical(int location, double splitFraction)
80  {
81  this->split(location, Qt::Vertical, splitFraction);
82  }
83  void splitHorizontal(int location, double splitFraction)
84  {
85  this->split(location, Qt::Horizontal, splitFraction);
86  }
88 
93  void setSplitFraction(int location, double splitFraction);
95 
97 
102  void maximize(int location);
104 
105  class Item
106  {
107  public:
108  Item(Qt::Orientation direction, double fraction)
109  : Direction(direction)
110  , Fraction(fraction)
111  {
112  }
113  Item(QWidget* widget = nullptr)
114  : Widget(widget)
115  {
116  }
117 
118  private:
119  QWidget* Widget = nullptr;
120  Qt::Orientation Direction = Qt::Horizontal;
121  double Fraction = -1.0;
123  };
124 
136  QVector<QWidget*> rearrange(const QVector<Item>& layout);
137 
138 private:
139  Q_DISABLE_COPY(pqHierarchicalGridLayout);
140 
141  class pqInternals;
142  QScopedPointer<pqInternals> Internals;
143 };
144 
145 #endif
void splitVertical(int location, double splitFraction)
Adds a splitter item.
direction
location
Item(Qt::Orientation direction, double fraction)
QLayout specialization that supports a hierarchical layout.
void split(const std::string &s, const char &delim, std::vector< std::string > &elems)
#define PQWIDGETS_EXPORT
void splitHorizontal(int location, double splitFraction)
Adds a splitter item.
QVector< QWidget * > rearrange(const QVector< Item > &layout)
API to rearrange the widgets in this layout.
index