QGridLayout(3qt)

πŸ“¦ version 3.3.8b, in fedora 43, fedora 44

✨ NAME ✨

okay so bestie, this is the manual page for QGridLayout(3qt) β€” and it is literally the blueprint for laying out widgets in a grid. no cap. πŸ’…

🌸 SYNOPSIS 🌸

#include <qlayout.h>

Inherits QLayout.

πŸŽ€ Public Members

QGridLayout ( QWidget * parent, int nRows = 1, int nCols = 1, int margin = 0, int space = -1, const char * name = 0 )
QGridLayout ( int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 )
QGridLayout ( QLayout * parentLayout, int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 )
~QGridLayout ()
virtual QSize sizeHint () const
virtual QSize minimumSize () const
virtual QSize maximumSize () const
virtual void setRowStretch ( int row, int stretch )
virtual void setColStretch ( int col, int stretch )
int rowStretch ( int row ) const
int colStretch ( int col ) const
void setRowSpacing ( int row, int minSize )
void setColSpacing ( int col, int minSize )
int rowSpacing ( int row ) const
int colSpacing ( int col ) const
int numRows () const
int numCols () const
QRect cellGeometry ( int row, int col ) const
virtual bool hasHeightForWidth () const
virtual int heightForWidth ( int w ) const
virtual QSizePolicy::ExpandData expanding () const
virtual void invalidate ()
virtual void addItem ( QLayoutItem * item )
void addItem ( QLayoutItem * item, int row, int col )
void addMultiCell ( QLayoutItem * item, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )
void addWidget ( QWidget * w, int row, int col, int alignment = 0 )
void addMultiCellWidget ( QWidget * w, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )
void addLayout ( QLayout * layout, int row, int col )
void addMultiCellLayout ( QLayout * layout, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )
void addRowSpacing ( int row, int minsize )  (obsolete)
void addColSpacing ( int col, int minsize )  (obsolete)
void expand ( int nRows, int nCols )
enum Corner { TopLeft, TopRight, BottomLeft, BottomRight }
void setOrigin ( Corner c )
Corner origin () const
virtual void setGeometry ( const QRect & r )

πŸ¦‹ Protected Members

bool findWidget ( QWidget * w, int * row, int * col )
void add ( QLayoutItem * item, int row, int col )

πŸ’– DESCRIPTION πŸ’–

The QGridLayout class lays out widgets in a grid. periodt. πŸ’…

QGridLayout takes the space made available to it (by its parent layout or by the mainWidget()), 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 addColSpacing() and the minimum width of each widget in that column. The stretch factor is set using setColStretch() 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(), addLayout() or by the auto-add facility. It is also possible for a widget to occupy multiple cells using addMultiCellWidget(). 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):

[Image Omitted]

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 addColSpacing(). 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 addColSpacing() and setColStretch().

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(), addLayout() and addMultiCellWidget().

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, Layout Overview, Widget Appearance and Style, and Layout Management.


🧩 Member Type Documentation 🧩

QGridLayout::Corner

This enum identifies which corner is the origin (0, 0) of the layout.

  • QGridLayout::TopLeft β€” the top-left corner
  • QGridLayout::TopRight β€” the top-right corner
  • QGridLayout::BottomLeft β€” the bottom-left corner
  • QGridLayout::BottomRight β€” the bottom-right corner

πŸ› οΈ MEMBER FUNCTION DOCUMENTATION πŸ› οΈ

QGridLayout::QGridLayout ( QWidget * parent, int nRows = 1, int nCols = 1, int margin = 0, int space = -1, const char * name = 0 )

Constructs a new QGridLayout with nRows rows, nCols columns and parent widget, parent. parent may not be 0. The grid layout is called name.

margin is the number of pixels between the edge of the widget and its managed children. space is the default number of pixels between cells. If space is -1, the value of margin is used.

QGridLayout::QGridLayout ( int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 )

Constructs a new grid with nRows rows and nCols columns. If spacing is -1, this QGridLayout inherits its parent's spacing(); otherwise spacing is used. The grid layout is called name.

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 ( QLayout * parentLayout, int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 )

Constructs a new grid that is placed inside parentLayout with nRows rows and nCols columns. If spacing is -1, this QGridLayout inherits its parent's spacing(); otherwise spacing is used. The grid layout is called name.

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

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::add ( QLayoutItem * item, int row, int col ) [protected]

Adds item at position row, col. The layout takes ownership of the item.

void QGridLayout::addColSpacing ( int col, int minsize )

This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.

Sets the minimum width of column col to minsize pixels.

Use setColSpacing() instead.

void QGridLayout::addItem ( QLayoutItem * item, int row, int col )

Adds item at position row, col. The layout takes ownership of the item.

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

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 col )

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

layout becomes a child of the grid layout.

When a layout is constructed with another layout as its parent, you don't need to call addLayout(); the child layout is automatically added to the parent layout as it is constructed.

See also addMultiCellLayout().

Examples:

void QGridLayout::addMultiCell ( QLayoutItem * item, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )

Adds the item to the cell grid, spanning multiple rows/columns.

The cell will span from fromRow, fromCol to toRow, toCol. Alignment is specified by alignment, which is a bitwise OR of Qt::AlignmentFlags values. The default alignment is 0, which means that the widget fills the entire cell.

void QGridLayout::addMultiCellLayout ( QLayout * layout, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )

Adds the layout layout to the cell grid, spanning multiple rows/columns. The cell will span from fromRow, fromCol to toRow, toCol.

Alignment is specified by alignment, which is a bitwise OR of Qt::AlignmentFlags values. 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.

See also addLayout().

void QGridLayout::addMultiCellWidget ( QWidget * w, int fromRow, int toRow, int fromCol, int toCol, int alignment = 0 )

Adds the widget w to the cell grid, spanning multiple rows/columns. The cell will span from fromRow, fromCol to toRow, toCol.

Alignment is specified by alignment, which is a bitwise OR of Qt::AlignmentFlags values. The default alignment is 0, which means that the widget fills the entire cell.

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

See also addWidget().

Examples:

void QGridLayout::addRowSpacing ( int row, int minsize )

This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code.

Sets the minimum height of row row to minsize pixels.

Use setRowSpacing() instead.

  • void QGridLayout::addWidget ( QWidget * w, int row, int col, int alignment = 0 ) β€” drops the widget w into the cell grid at row, col. And just so we're clear, the top-left spot is (0, 0) unless you moved the origin. πŸ’…

The alignment situation: it's a bitwise OR of Qt::AlignmentFlags values. Default is 0, and 0 means the widget stretches out and fills the whole entire cell, no crumbs left. ✨

Do not call this if you've turned on the auto-add facility of the layout. Fr fr, just don't.

Starting in Qt 3.0, that alignment parameter gets read way more aggressively than it did in the older Qts. A non-default alignment now means the widget should not grow to fill the space it's been handed β€” it gets sized according to sizeHint() instead. She's on a diet, respect it. πŸŽ€

See also addMultiCellWidget().

Examples:


  • QRect QGridLayout::cellGeometry ( int row, int col ) const β€” hands you the geometry of the cell sitting at row row and column col. If row or col is straight-up outside the grid, you get an invalid rectangle back. Sorry bestie. πŸ™ˆ
Warning: in the current version of Qt this function does not return valid results until setGeometry() has been called β€” meaning after the mainWidget() is actually visible. So don't be out here calling it early and acting shocked. πŸ’€

  • int QGridLayout::colSpacing ( int col ) const β€” gives you the column spacing for column col.

See also setColSpacing().


  • int QGridLayout::colStretch ( int col ) const β€” gives you the stretch factor for column col.

See also setColStretch().


  • void QGridLayout::expand ( int nRows, int nCols ) β€” grows this grid out so it has nRows rows and nCols columns. It will not shrink the grid, she only goes up. πŸ“ˆ You genuinely should not need to call this, because QGridLayout expands on its own as new items get inserted. It's self-sufficient, a whole main character. πŸ‘‘

  • QSizePolicy::ExpandData QGridLayout::expanding () const [virtual] β€” tells you whether this layout can use up more space than its sizeHint(). Vertical or Horizontal means it only wants to grow in one dimension. BothDirections means it wants to grow in both β€” greedy in the best way. 🌈

Reimplemented from QLayout.


  • bool QGridLayout::findWidget ( QWidget * w, int * row, int * col ) [protected] β€” goes looking for widget w in this layout (and does not include child layouts, so don't @ me). If w turns up, it sets row and col to the row and column and returns TRUE; otherwise it returns FALSE. πŸ”

Note: if a widget spans multiple rows/columns, you get the top-left cell back.


  • 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] β€” gives you the layout's preferred height when it's w pixels wide.

Reimplemented from QLayoutItem.


  • void QGridLayout::invalidate () [virtual] β€” resets cached information. Wipes the slate, clears the cache, we love a fresh start. 🧚

Reimplemented from QLayout.


  • QSize QGridLayout::maximumSize () const [virtual] β€” returns the maximum size this grid needs.

Reimplemented from QLayout.


  • QSize QGridLayout::minimumSize () const [virtual] β€” returns the minimum size this grid needs.

Reimplemented from QLayout.


  • int QGridLayout::numCols () const β€” returns the number of columns in this grid.

  • int QGridLayout::numRows () const β€” returns the number of rows in this grid.

  • Corner QGridLayout::origin () const β€” returns the corner being used as the grid's origin, i.e. for position (0, 0).

  • int QGridLayout::rowSpacing ( int row ) const β€” gives you the row spacing for row row.

See also setRowSpacing().


  • int QGridLayout::rowStretch ( int row ) const β€” gives you the stretch factor for row row.

See also setRowStretch().


  • void QGridLayout::setColSpacing ( int col, int minSize ) β€” sets the minimum width of column col to minSize pixels.

See also colSpacing() and setRowSpacing().


  • void QGridLayout::setColStretch ( int col, int stretch ) [virtual] β€” sets the stretch factor of column col to stretch. The first column is number 0, obviously. πŸ’…

The stretch factor is relative to the other columns in this grid. Columns with a higher stretch factor take more of the available space. She's taking up space and she deserves it. ✨

The default stretch factor is 0. And here's the lil catch: if the stretch factor is 0 and no other column in this table can grow at all, the column may still grow.

See also colStretch(), addColSpacing(), and setRowStretch().

Examples:


  • void QGridLayout::setGeometry ( const QRect & r ) [virtual] β€” resizes the managed widgets inside the rectangle r.

Reimplemented from QLayout.


  • void QGridLayout::setOrigin ( 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 setColSpacing().


  • void QGridLayout::setRowStretch ( int row, int stretch ) [virtual] β€” 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. And same deal as the columns: 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 setColStretch().

Examples:


  • QSize QGridLayout::sizeHint () const [virtual] β€” returns the preferred size of this grid. Her ideal form. πŸ¦‹

Reimplemented from QLayoutItem.


🌸 SEE ALSO 🌸


Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the license file included in the distribution for a complete license statement.


✨ AUTHOR ✨

Generated automatically from the source code. (No human wrote it, it just appeared, very mysterious of it honestly. 🫢)


😭 BUGS 😭

If you find a bug in Qt, please report it as described in http://doc.trolltech.com/bughowto.html. Good bug reports help us to help you. Thank you. πŸ™ (Genuinely though β€” good bug reports are iconic and we appreciate you.)

The definitive Qt documentation is provided in HTML format; it's located at $QTDIR/doc/html and can be read using Qt Assistant or with a web browser. This man page is provided as a convenience for those users who prefer man pages, although this format is not officially supported by Trolltech. (So it's giving "gifted, not promised," bestie. πŸŽ€)

If you find errors in this manual page, please report them to qt-bugs@trolltech.com. Please include the name of the manual page (qgridlayout.3qt) and the Qt version (3.3.8).


And that's a wrap on QGridLayout(3qt) β€” this lil guy is dated 2 February 2007, courtesy of Trolltech AS, and you made it all the way to the bottom of the grid. Slay, fr fr. πŸ’œπŸŒ·βœ¨

πŸ“¦ where this page comes from