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)
88 explicit QCPLayoutElement(
QCustomPlot *parentPlot=0);
89 virtual ~QCPLayoutElement();
93 QRect
rect()
const {
return mRect; }
94 QRect outerRect()
const {
return mOuterRect; }
95 QMargins margins()
const {
return mMargins; }
96 QMargins minimumMargins()
const {
return mMinimumMargins; }
97 QCP::MarginSides autoMargins()
const {
return mAutoMargins; }
98 QSize minimumSize()
const {
return mMinimumSize; }
99 QSize maximumSize()
const {
return mMaximumSize; }
101 QHash<QCP::MarginSide, QCPMarginGroup*> marginGroups()
const {
return mMarginGroups; }
104 void setOuterRect(
const QRect &rect);
105 void setMargins(
const QMargins &margins);
106 void setMinimumMargins(
const QMargins &margins);
107 void setAutoMargins(QCP::MarginSides sides);
108 void setMinimumSize(
const QSize &size);
109 void setMinimumSize(
int width,
int height);
110 void setMaximumSize(
const QSize &size);
111 void setMaximumSize(
int width,
int height);
112 void setMarginGroup(QCP::MarginSides sides,
QCPMarginGroup *group);
115 virtual void update(UpdatePhase phase);
116 virtual QSize minimumSizeHint()
const;
117 virtual QSize maximumSizeHint()
const;
118 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
121 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
126 QSize mMinimumSize, mMaximumSize;
127 QRect mRect, mOuterRect;
128 QMargins mMargins, mMinimumMargins;
129 QCP::MarginSides mAutoMargins;
130 QHash<QCP::MarginSide, QCPMarginGroup*> mMarginGroups;
139 virtual void wheelEvent(QWheelEvent *event) {Q_UNUSED(event)}
144 virtual void parentPlotInitialized(
QCustomPlot *parentPlot);
147 Q_DISABLE_COPY(QCPLayoutElement)
155 class QCP_LIB_DECL QCPLayout : public QCPLayoutElement
159 explicit QCPLayout();
163 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
166 virtual int elementCount()
const = 0;
167 virtual QCPLayoutElement* elementAt(
int index)
const = 0;
168 virtual QCPLayoutElement* takeAt(
int index) = 0;
169 virtual bool take(QCPLayoutElement* element) = 0;
170 virtual void simplify();
173 bool removeAt(
int index);
174 bool remove(QCPLayoutElement* element);
179 virtual void updateLayout();
182 void sizeConstraintsChanged()
const;
183 void adoptElement(QCPLayoutElement *el);
184 void releaseElement(QCPLayoutElement *el);
185 QVector<int> getSectionSizes(QVector<int> maxSizes, QVector<int> minSizes, QVector<double> stretchFactors,
int totalSize)
const;
188 Q_DISABLE_COPY(QCPLayout)
189 friend class QCPLayoutElement;
197 Q_PROPERTY(
int rowCount READ rowCount)
198 Q_PROPERTY(
int columnCount READ columnCount)
199 Q_PROPERTY(QList<double> columnStretchFactors READ columnStretchFactors WRITE setColumnStretchFactors)
200 Q_PROPERTY(QList<double> rowStretchFactors READ rowStretchFactors WRITE setRowStretchFactors)
201 Q_PROPERTY(
int columnSpacing READ columnSpacing WRITE setColumnSpacing)
202 Q_PROPERTY(
int rowSpacing READ rowSpacing WRITE setRowSpacing)
209 int rowCount()
const;
210 int columnCount()
const;
211 QList<double> columnStretchFactors()
const {
return mColumnStretchFactors; }
212 QList<double> rowStretchFactors()
const {
return mRowStretchFactors; }
213 int columnSpacing()
const {
return mColumnSpacing; }
214 int rowSpacing()
const {
return mRowSpacing; }
217 void setColumnStretchFactor(
int column,
double factor);
218 void setColumnStretchFactors(
const QList<double> &factors);
219 void setRowStretchFactor(
int row,
double factor);
220 void setRowStretchFactors(
const QList<double> &factors);
221 void setColumnSpacing(
int pixels);
222 void setRowSpacing(
int pixels);
225 virtual void updateLayout();
226 virtual int elementCount()
const;
227 virtual QCPLayoutElement* elementAt(
int index)
const;
228 virtual QCPLayoutElement* takeAt(
int index);
229 virtual bool take(QCPLayoutElement* element);
230 virtual QList<QCPLayoutElement*> elements(
bool recursive)
const;
231 virtual void simplify();
232 virtual QSize minimumSizeHint()
const;
233 virtual QSize maximumSizeHint()
const;
236 QCPLayoutElement *element(
int row,
int column)
const;
237 bool addElement(
int row,
int column, QCPLayoutElement *element);
238 bool hasElement(
int row,
int column);
239 void expandTo(
int newRowCount,
int newColumnCount);
240 void insertRow(
int newIndex);
241 void insertColumn(
int newIndex);
245 QList<QList<QCPLayoutElement*> > mElements;
246 QList<double> mColumnStretchFactors;
247 QList<double> mRowStretchFactors;
248 int mColumnSpacing, mRowSpacing;
251 void getMinimumRowColSizes(QVector<int> *minColWidths, QVector<int> *minRowHeights)
const;
252 void getMaximumRowColSizes(QVector<int> *maxColWidths, QVector<int> *maxRowHeights)
const;
274 InsetPlacement insetPlacement(
int index)
const;
275 Qt::Alignment insetAlignment(
int index)
const;
276 QRectF insetRect(
int index)
const;
279 void setInsetPlacement(
int index, InsetPlacement placement);
280 void setInsetAlignment(
int index, Qt::Alignment alignment);
281 void setInsetRect(
int index,
const QRectF &rect);
284 virtual void updateLayout();
285 virtual int elementCount()
const;
286 virtual QCPLayoutElement* elementAt(
int index)
const;
287 virtual QCPLayoutElement* takeAt(
int index);
288 virtual bool take(QCPLayoutElement* element);
290 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
293 void addElement(QCPLayoutElement *element, Qt::Alignment alignment);
294 void addElement(QCPLayoutElement *element,
const QRectF &rect);
298 QList<QCPLayoutElement*> mElements;
299 QList<InsetPlacement> mInsetPlacement;
300 QList<Qt::Alignment> mInsetAlignment;
301 QList<QRectF> mInsetRect;
307 #endif // QCP_LAYOUT_H