44 it !=
itemList.constEnd(); ++it, index++ )
63 setSpacing( spacing );
64 setContentsMargins( margin, margin, margin, margin );
74 setSpacing( spacing );
98 QLayout::invalidate();
224 QLayout::setGeometry( rect );
240 ( *it )->setGeometry( itemGeometries[index] );
271 if ( rowWidth > width )
300 colWidth[col] = qMax( colWidth[col],
304 const QMargins m = contentsMargins();
306 int rowWidth = m.left() + m.right() + ( numColumns - 1 ) * spacing();
308 rowWidth += colWidth[col];
348 if ( numColumns == 0 ||
isEmpty() )
349 return itemGeometries;
356 return itemGeometries;
361 layoutGrid( numColumns, rowHeight, colWidth );
363 bool expandH, expandV;
367 if ( expandH || expandV )
368 stretchGrid( rect, numColumns, rowHeight, colWidth );
372 const QRect alignedRect = alignmentRect( rect );
375 const int xOffset = expandH ? 0 : alignedRect.x();
376 const int yOffset = expandV ? 0 : alignedRect.y();
381 const int xySpace = spacing();
383 const QMargins m = contentsMargins();
385 rowY[0] = yOffset + m.top();
386 for ( uint r = 1; r <
numRows; r++ )
387 rowY[r] = rowY[r - 1] + rowHeight[r - 1] + xySpace;
389 colX[0] = xOffset + m.left();
391 colX[c] = colX[c - 1] + colWidth[c - 1] + xySpace;
394 itemGeometries.reserve( itemCount );
401 const QRect itemGeometry( colX[col], rowY[row],
402 colWidth[col], rowHeight[row] );
403 itemGeometries.append( itemGeometry );
406 return itemGeometries;
422 if ( numColumns <= 0 )
435 rowHeight[row] = ( col == 0 )
436 ? size.height() : qMax( rowHeight[row], size.height() );
437 colWidth[col] = ( row == 0 )
438 ? size.width() : qMax( colWidth[col], size.width() );
468 layoutGrid( numColumns, rowHeight, colWidth );
470 const QMargins m = contentsMargins();
472 int h = m.top() + m.bottom() + ( numRows - 1 ) * spacing();
473 for ( uint row = 0; row <
numRows; row++ )
494 if ( numColumns == 0 ||
isEmpty() )
497 bool expandH, expandV;
501 const QMargins m = contentsMargins();
505 int xDelta = rect.width() - m.left() - m.right() - ( numColumns - 1 ) * spacing();
507 xDelta -= colWidth[col];
513 const int space = xDelta / ( numColumns - col );
514 colWidth[col] +=
space;
526 int yDelta = rect.height() - m.top() - m.bottom() - ( numRows - 1 ) * spacing();
527 for ( uint row = 0; row <
numRows; row++ )
528 yDelta -= rowHeight[row];
532 for ( uint row = 0; row <
numRows; row++ )
534 const int space = yDelta / ( numRows - row );
535 rowHeight[row] +=
space;
566 layoutGrid( numColumns, rowHeight, colWidth );
568 const QMargins m = contentsMargins();
570 int h = m.top() + m.bottom() + ( numRows - 1 ) * spacing();
571 for ( uint row = 0; row <
numRows; row++ )
574 int w = m.left() + m.right() + ( numColumns - 1 ) * spacing();
578 return QSize( w, h );
602 #include "moc_qwt_dyngrid_layout.cpp" virtual int heightForWidth(int) const QWT_OVERRIDE
virtual uint columnsForWidth(int width) const
Calculate the number of columns for a given width.
Qt::Orientations expanding
QwtDynGridLayout(QWidget *, int margin=0, int spacing=-1)
int maxRowWidth(int numColumns) const
virtual bool hasHeightForWidth() const QWT_OVERRIDE
virtual QLayoutItem * takeAt(int index) QWT_OVERRIDE
QVector< QSize > itemSizeHints
void setMaxColumns(uint maxColumns)
virtual int maxItemWidth() const
virtual QSize sizeHint() const QWT_OVERRIDE
virtual QLayoutItem * itemAt(int index) const QWT_OVERRIDE
virtual Qt::Orientations expandingDirections() const QWT_OVERRIDE
Returns whether this layout can make use of more space than sizeHint().
QList< QRect > layoutItems(const QRect &, uint numColumns) const
virtual void addItem(QLayoutItem *) QWT_OVERRIDE
Add an item to the next free position.
void stretchGrid(const QRect &rect, uint numColumns, QVector< int > &rowHeight, QVector< int > &colWidth) const
span_constexpr std::size_t size(span< T, Extent > const &spn)
QList< QLayoutItem *> itemList
void layoutGrid(uint numColumns, QVector< int > &rowHeight, QVector< int > &colWidth) const
virtual void invalidate() QWT_OVERRIDE
Invalidate all internal caches.
uint maxColumns() const
Return the upper limit for the number of columns.
virtual ~QwtDynGridLayout()
Destructor.
virtual bool isEmpty() const QWT_OVERRIDE
virtual void setGeometry(const QRect &) QWT_OVERRIDE
virtual int count() const QWT_OVERRIDE
void setExpandingDirections(Qt::Orientations)