51 QHash<QCP::MarginSide, QList<QCPLayoutElement*> > mChildren;
70 Q_PROPERTY(QRect rect READ rect)
71 Q_PROPERTY(QRect outerRect READ outerRect WRITE setOuterRect)
72 Q_PROPERTY(QMargins margins READ margins WRITE setMargins)
73 Q_PROPERTY(QMargins minimumMargins READ minimumMargins WRITE setMinimumMargins)
74 Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize)
75 Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize)
78 explicit QCPLayoutElement(
QCustomPlot *parentPlot=0);
79 virtual ~QCPLayoutElement();
83 QRect
rect()
const {
return mRect; }
84 QRect outerRect()
const {
return mOuterRect; }
85 QMargins margins()
const {
return mMargins; }
86 QMargins minimumMargins()
const {
return mMinimumMargins; }
87 QCP::MarginSides autoMargins()
const {
return mAutoMargins; }
88 QSize minimumSize()
const {
return mMinimumSize; }
89 QSize maximumSize()
const {
return mMaximumSize; }
91 QHash<QCP::MarginSide, QCPMarginGroup*> marginGroups()
const {
return mMarginGroups; }
94 void setOuterRect(
const QRect &rect);
95 void setMargins(
const QMargins &margins);
96 void setMinimumMargins(
const QMargins &margins);
97 void setAutoMargins(QCP::MarginSides sides);
98 void setMinimumSize(
const QSize &size);
99 void setMinimumSize(
int width,
int height);
100 void setMaximumSize(
const QSize &size);
101 void setMaximumSize(
int width,
int height);
102 void setMarginGroup(QCP::MarginSides sides,
QCPMarginGroup *group);
105 virtual void update();
106 virtual QSize minimumSizeHint()
const;
107 virtual QSize maximumSizeHint()
const;
108 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
111 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
116 QSize mMinimumSize, mMaximumSize;
117 QRect mRect, mOuterRect;
118 QMargins mMargins, mMinimumMargins;
119 QCP::MarginSides mAutoMargins;
120 QHash<QCP::MarginSide, QCPMarginGroup*> mMarginGroups;
129 virtual void wheelEvent(QWheelEvent *event) {Q_UNUSED(event)}
134 virtual void parentPlotInitialized(
QCustomPlot *parentPlot);
137 Q_DISABLE_COPY(QCPLayoutElement)
145 class QCP_LIB_DECL QCPLayout : public QCPLayoutElement
149 explicit QCPLayout();
152 virtual void update();
153 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
156 virtual int elementCount()
const = 0;
157 virtual QCPLayoutElement* elementAt(
int index)
const = 0;
158 virtual QCPLayoutElement* takeAt(
int index) = 0;
159 virtual bool take(QCPLayoutElement* element) = 0;
160 virtual void simplify();
163 bool removeAt(
int index);
164 bool remove(QCPLayoutElement* element);
169 virtual void updateLayout();
172 void sizeConstraintsChanged()
const;
173 void adoptElement(QCPLayoutElement *el);
174 void releaseElement(QCPLayoutElement *el);
175 QVector<int> getSectionSizes(QVector<int> maxSizes, QVector<int> minSizes, QVector<double> stretchFactors,
int totalSize)
const;
178 Q_DISABLE_COPY(QCPLayout)
179 friend class QCPLayoutElement;
187 Q_PROPERTY(
int rowCount READ rowCount)
188 Q_PROPERTY(
int columnCount READ columnCount)
189 Q_PROPERTY(QList<double> columnStretchFactors READ columnStretchFactors WRITE setColumnStretchFactors)
190 Q_PROPERTY(QList<double> rowStretchFactors READ rowStretchFactors WRITE setRowStretchFactors)
191 Q_PROPERTY(
int columnSpacing READ columnSpacing WRITE setColumnSpacing)
192 Q_PROPERTY(
int rowSpacing READ rowSpacing WRITE setRowSpacing)
199 int rowCount()
const;
200 int columnCount()
const;
201 QList<double> columnStretchFactors()
const {
return mColumnStretchFactors; }
202 QList<double> rowStretchFactors()
const {
return mRowStretchFactors; }
203 int columnSpacing()
const {
return mColumnSpacing; }
204 int rowSpacing()
const {
return mRowSpacing; }
207 void setColumnStretchFactor(
int column,
double factor);
208 void setColumnStretchFactors(
const QList<double> &factors);
209 void setRowStretchFactor(
int row,
double factor);
210 void setRowStretchFactors(
const QList<double> &factors);
211 void setColumnSpacing(
int pixels);
212 void setRowSpacing(
int pixels);
215 virtual void updateLayout();
216 virtual int elementCount()
const;
217 virtual QCPLayoutElement* elementAt(
int index)
const;
218 virtual QCPLayoutElement* takeAt(
int index);
219 virtual bool take(QCPLayoutElement* element);
220 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
221 virtual void simplify();
222 virtual QSize minimumSizeHint()
const;
223 virtual QSize maximumSizeHint()
const;
226 QCPLayoutElement *element(
int row,
int column)
const;
227 bool addElement(
int row,
int column, QCPLayoutElement *element);
228 bool hasElement(
int row,
int column);
229 void expandTo(
int newRowCount,
int newColumnCount);
230 void insertRow(
int newIndex);
231 void insertColumn(
int newIndex);
235 QList<QList<QCPLayoutElement*> > mElements;
236 QList<double> mColumnStretchFactors;
237 QList<double> mRowStretchFactors;
238 int mColumnSpacing, mRowSpacing;
241 void getMinimumRowColSizes(QVector<int> *minColWidths, QVector<int> *minRowHeights)
const;
242 void getMaximumRowColSizes(QVector<int> *maxColWidths, QVector<int> *maxRowHeights)
const;
264 InsetPlacement insetPlacement(
int index)
const;
265 Qt::Alignment insetAlignment(
int index)
const;
266 QRectF insetRect(
int index)
const;
269 void setInsetPlacement(
int index, InsetPlacement placement);
270 void setInsetAlignment(
int index, Qt::Alignment alignment);
271 void setInsetRect(
int index,
const QRectF &rect);
274 virtual void updateLayout();
275 virtual int elementCount()
const;
276 virtual QCPLayoutElement* elementAt(
int index)
const;
277 virtual QCPLayoutElement* takeAt(
int index);
278 virtual bool take(QCPLayoutElement* element);
280 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
283 void addElement(QCPLayoutElement *element, Qt::Alignment alignment);
284 void addElement(QCPLayoutElement *element,
const QRectF &rect);
288 QList<QCPLayoutElement*> mElements;
289 QList<InsetPlacement> mInsetPlacement;
290 QList<Qt::Alignment> mInsetAlignment;
291 QList<QRectF> mInsetRect;
297 #endif // QCP_LAYOUT_H