Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# QGridLayout Class Reference

The QGridLayout class lays out widgets in a grid. More...

    #include <QGridLayout>

Inherits QLayout.

- List of all members, including inherited members
- Obsolete members
- Compatibility members

### Writable Properties

- 3 writable properties inherited from QLayout
- 1 writable property inherited from QObject

### Public Functions

- QGridLayout ( QWidget * parent )
- QGridLayout ( QLayout * parentLayout )
- QGridLayout ()
- ~QGridLayout ()
- void addItem ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 )
- void addLayout ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 )
- void addLayout ( QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
- void addWidget ( QWidget * w, int row, int column, Qt::Alignment alignment = 0 )
- void addWidget ( QWidget * w, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
- QRect cellGeometry ( int row, int column ) const
- int columnCount () const
- int columnSpacing ( int column ) const
- int columnStretch ( int column ) const
- virtual QSizePolicy::ExpandData expanding () const
- void getItemPosition ( int idx, int * row, int * column, int * rowSpan, int * columnSpan )
- virtual bool hasHeightForWidth () const
- virtual int heightForWidth ( int w ) const
- virtual void invalidate ()
- virtual QSize maximumSize () const
- virtual QSize minimumSize () const
- Qt::Corner origin () const
- int rowCount () const
- int rowSpacing ( int row ) const
- int rowStretch ( int row ) const
- void setColumnSpacing ( int column, int minSize )
- void setColumnStretch ( int column, int stretch )
- virtual void setGeometry ( const QRect & r )
- void setOrigin ( Qt::Corner c )
- void setRowSpacing ( int row, int minSize )
- void setRowStretch ( int row, int stretch )
- virtual QSize sizeHint () const

- 21 public functions inherited from QLayout
- 26 public functions inherited from QObject
- 16 public functions inherited from QLayoutItem

### Public Slots

- 1 public slot inherited from QObject

### Signals

- 1 signal inherited from QObject

### Static Public Members

- 1 static public member inherited from QLayout
- 4 static public members inherited from QObject

### Protected Functions

- virtual void addItem ( QLayoutItem * item )
- bool findWidget ( QWidget * w, int * row, int * column )

- 4 protected functions inherited from QLayout
- 7 protected functions inherited from QObject

## Detailed Description

The QGridLayout class lays out widgets in a grid.

QGridLayout takes the space made available to it (by its parent layout or by the parentWidget()), divides it up into rows and columns, and puts each widget it manages into the correct cell.

Columns and rows behave identically; we will discuss columns, but there are equivalent functions for rows.

Each column has a minimum width and a stretch factor. The minimum width is the greatest of that set using setColumnSpacing() and the minimum width of each widget in that column. The stretch factor is set using setColumnStretch() and determines how much of the available space the column will get over and above its necessary minimum.

Normally, each managed widget or layout is put into a cell of its own using addWidget(). It is also possible for a widget to occupy multiple cells using the row and column spanning overloads of addItem() and addWidget(). If you do this, QGridLayout will guess how to distribute the size over the columns/rows (based on the stretch factors).

To remove a widget from a layout, call remove(). Calling QWidget::hide() on a widget also effectively removes the widget from the layout until QWidget::show() is called.

This illustration shows a fragment of a dialog with a five-column, three-row grid (the grid is shown overlaid in magenta):

Columns 0, 2 and 4 in this dialog fragment are made up of a QLabel, a QLineEdit, and a QListBox. Columns 1 and 3 are placeholders made with setColumnSpacing(). Row 0 consists of three QLabel objects, row 1 of three QLineEdit objects and row 2 of three QListBox objects. We used placeholder columns (1 and 3) to get the right amount of space between the columns.

Note that the columns and rows are not equally wide or tall. If you want two columns to have the same width, you must set their minimum widths and stretch factors to be the same yourself. You do this using setColumnSpacing() and setColumnStretch().

If the QGridLayout is not the top-level layout (i.e. does not manage all of the widget's area and children), you must add it to its parent layout when you create it, but before you do anything with it. The normal way to add a layout is by calling parentLayout->addLayout().

Once you have added your layout you can start putting widgets and other layouts into the cells of your grid layout using addWidget(), addItem(), and addLayout().

QGridLayout also includes two margin widths: the border and the spacing. The border is the width of the reserved space along each of the QGridLayout's four sides. The spacing is the width of the automatically allocated spacing between neighboring boxes.

Both the border and the spacing are parameters of the constructor and default to 0.

See also QGrid and Layout Overview.

## Member Function Documentation

### QGridLayout::QGridLayout ( QWidget * parent )

Constructs a new QGridLayout with parent widget, parent. The layout has one row and one column initially, and will expand when new items are inserted, or setColumnCount()/setRowCount() is called.

### QGridLayout::QGridLayout ( QLayout * parentLayout )

Constructs a new grid that is placed inside parentLayout. The layout has one row and one column initially, and will expand when new items are inserted, or setColumnCount()/setRowCount() is called.

This grid is placed according to parentLayout's default placement rules.

### QGridLayout::QGridLayout ()

Constructs a new grid layout.

You must insert this grid into another layout. You can insert widgets and layouts into this layout at any time, but laying out will not be performed before this is inserted into another layout.

### QGridLayout::~QGridLayout ()

Destroys the grid layout. Geometry management is terminated if this is a top-level grid.

The layout's widgets aren't destroyed.

### void QGridLayout::addItem ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 )

Adds item at position row, column, spanning rowSpan rows and columnSpan columns, and aligns it according to alignment. If rowSpan and/or columnSpan is -1, then the item will extend to the bottom and/or right edge, respectively. The layout takes ownership of the item.

Warning: Do not use this function to add child layouts or child widget items. Use addLayout() or addWidget() instead.

### void QGridLayout::addItem ( QLayoutItem * item ) `[virtual protected]`

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Adds item to the next free position of this layout.

Reimplemented from QLayout.

### void QGridLayout::addLayout ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 )

Places the layout at position (row, column) in the grid. The top-left position is (0, 0).

The alignment is specified by alignment. The default alignment is 0, which means that the widget fills the entire cell.

A non-zero alignment indicates that the layout should not grow to fill the available space but should be sized according to sizeHint().

layout becomes a child of the grid layout.

### void QGridLayout::addLayout ( QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

This version adds the layout layout to the cell grid, spanning multiple rows/columns. The cell will start at row, column spanning rowSpan rows and columnSpan columns.

If rowSpan and/or columnSpan is -1, then the layout will extend to the bottom and/or right edge, respectively.

### void QGridLayout::addWidget ( QWidget * w, int row, int column, Qt::Alignment alignment = 0 )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Adds the widget w to the cell grid at row, column. The top-left position is (0, 0) by default.

The alignment is specified by alignment. The default alignment is 0, which means that the widget fills the entire cell.

### void QGridLayout::addWidget ( QWidget * w, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

This version adds the widget w to the cell grid, spanning multiple rows/columns. The cell will start at fromRow, fromColumn spanning rowSpan rows and columnSpan columns. The grid will have the given alignment.

If rowSpan and/or columnSpan is -1, then the widget will extend to the bottom and/or right edge, respectively.

### QRect QGridLayout::cellGeometry ( int row, int column ) const

Returns the geometry of the cell with row row and column column in the grid. Returns an invalid rectangle if row or column is outside the grid.

Warning: in the current version of Qt this function does not return valid results until setGeometry() has been called, i.e. after the parentWidget() is visible.

### int QGridLayout::columnCount () const

Returns the number of columns in this grid.

### int QGridLayout::columnSpacing ( int column ) const

Returns the column spacing for column column.

See also setColumnSpacing().

### int QGridLayout::columnStretch ( int column ) const

Returns the stretch factor for column column.

See also setColumnStretch().

### QSizePolicy::ExpandData QGridLayout::expanding () const `[virtual]`

Returns whether this layout can make use of more space than sizeHint(). A value of `Qt::Vertical` or `Qt::Horizontal` means that it wants to grow in only one dimension, whereas `BothDirections` means that it wants to grow in both dimensions.

Reimplemented from QLayoutItem.

### bool QGridLayout::findWidget ( QWidget * w, int * row, int * column ) `[protected]`

Searches for widget w in this layout (not including child layouts). If w is found, it sets `*`row and `*`column to the row and column that the widget occupies and returns true; otherwise returns false.

If the widget spans multiple rows/columns, the top-left cell is returned.

### void QGridLayout::getItemPosition ( int idx, int * row, int * column, int * rowSpan, int * columnSpan )

Returns the position information of the item with index idx.

### bool QGridLayout::hasHeightForWidth () const `[virtual]`

Returns true if this layout's preferred height depends on its width; otherwise returns false.

Reimplemented from QLayoutItem.

### int QGridLayout::heightForWidth ( int w ) const `[virtual]`

Returns the layout's preferred height when it is w pixels wide.

Reimplemented from QLayoutItem.

### void QGridLayout::invalidate () `[virtual]`

Resets cached information.

Reimplemented from QLayoutItem.

### QSize QGridLayout::maximumSize () const `[virtual]`

Returns the maximum size needed by this grid.

Reimplemented from QLayoutItem.

### QSize QGridLayout::minimumSize () const `[virtual]`

Returns the minimum size needed by this grid.

Reimplemented from QLayoutItem.

### Qt::Corner QGridLayout::origin () const

Returns the corner that's used for the grid's origin, i.e. for position (0, 0).

### int QGridLayout::rowCount () const

Returns the number of rows in this grid.

### int QGridLayout::rowSpacing ( int row ) const

Returns the row spacing for row row.

See also setRowSpacing().

### int QGridLayout::rowStretch ( int row ) const

Returns the stretch factor for row row.

See also setRowStretch().

### void QGridLayout::setColumnSpacing ( int column, int minSize )

Sets the minimum width of column column to minSize pixels.

See also columnSpacing() and setRowSpacing().

### void QGridLayout::setColumnStretch ( int column, int stretch )

Sets the stretch factor of column column to stretch. The first column is number 0.

The stretch factor is relative to the other columns in this grid. Columns with a higher stretch factor take more of the available space.

The default stretch factor is 0. If the stretch factor is 0 and no other column in this table can grow at all, the column may still grow.

An alternative approach is to add spacing using addItem() with a QSpacerItem.

See also columnStretch() and setRowStretch().

### void QGridLayout::setGeometry ( const QRect & r ) `[virtual]`

Resizes managed widgets within the rectangle r.

Reimplemented from QLayoutItem.

### void QGridLayout::setOrigin ( Qt::Corner c )

Sets the grid's origin corner, i.e. position (0, 0), to c.

### void QGridLayout::setRowSpacing ( int row, int minSize )

Sets the minimum height of row row to minSize pixels.

See also rowSpacing() and setColumnSpacing().

### void QGridLayout::setRowStretch ( int row, int stretch )

Sets the stretch factor of row row to stretch. The first row is number 0.

The stretch factor is relative to the other rows in this grid. Rows with a higher stretch factor take more of the available space.

The default stretch factor is 0. If the stretch factor is 0 and no other row in this table can grow at all, the row may still grow.

See also rowStretch(), setRowSpacing(), and setColumnStretch().

### QSize QGridLayout::sizeHint () const `[virtual]`

Returns the preferred size of this grid.

Reimplemented from QLayoutItem.