QGraphicsGridLayout Class

The QGraphicsGridLayout class provides a grid layout for managing widgets in Graphics View. More...

Header: #include <QGraphicsGridLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QGraphicsLayout

Public Functions

QGraphicsGridLayout(QGraphicsLayoutItem *parent = nullptr)
virtual ~QGraphicsGridLayout()
void addItem(QGraphicsLayoutItem *item, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addItem(QGraphicsLayoutItem *item, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Qt::Alignment alignment(QGraphicsLayoutItem *item) const
Qt::Alignment columnAlignment(int column) const
int columnCount() const
qreal columnMaximumWidth(int column) const
qreal columnMinimumWidth(int column) const
qreal columnPreferredWidth(int column) const
qreal columnSpacing(int column) const
int columnStretchFactor(int column) const
qreal horizontalSpacing() const
QGraphicsLayoutItem *itemAt(int row, int column) const
void removeItem(QGraphicsLayoutItem *item)
Qt::Alignment rowAlignment(int row) const
int rowCount() const
qreal rowMaximumHeight(int row) const
qreal rowMinimumHeight(int row) const
qreal rowPreferredHeight(int row) const
qreal rowSpacing(int row) const
int rowStretchFactor(int row) const
void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)
void setColumnAlignment(int column, Qt::Alignment alignment)
void setColumnFixedWidth(int column, qreal width)
void setColumnMaximumWidth(int column, qreal width)
void setColumnMinimumWidth(int column, qreal width)
void setColumnPreferredWidth(int column, qreal width)
void setColumnSpacing(int column, qreal spacing)
void setColumnStretchFactor(int column, int stretch)
void setHorizontalSpacing(qreal spacing)
void setRowAlignment(int row, Qt::Alignment alignment)
void setRowFixedHeight(int row, qreal height)
void setRowMaximumHeight(int row, qreal height)
void setRowMinimumHeight(int row, qreal height)
void setRowPreferredHeight(int row, qreal height)
void setRowSpacing(int row, qreal spacing)
void setRowStretchFactor(int row, int stretch)
void setSpacing(qreal spacing)
void setVerticalSpacing(qreal spacing)
qreal verticalSpacing() const

Reimplemented Public Functions

virtual int count() const override
virtual void invalidate() override
virtual QGraphicsLayoutItem *itemAt(int index) const override
virtual void removeAt(int index) override
virtual void setGeometry(const QRectF &rect) override
virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override

Detailed Description

The most common way to use QGraphicsGridLayout is to construct an object on the heap, passing a parent widget to the constructor, then add widgets and layouts by calling addItem(). QGraphicsGridLayout automatically computes the dimensions of the grid as you add items.

 QGraphicsScene scene;
 QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
 QGraphicsWidget *pushButton = scene.addWidget(new QPushButton);

 QGraphicsWidget *form = new QGraphicsWidget;
 scene.addItem(form);

 QGraphicsGridLayout *layout = new QGraphicsGridLayout(form);
 layout->addItem(textEdit, 0, 0);
 layout->addItem(pushButton, 0, 1);

Alternatively, if you do not pass a parent widget to the layout's constructor, you will need to call QGraphicsWidget::setLayout() to set this layout as the top-level layout for that widget, the widget will take ownership of the layout.

The layout takes ownership of the items. In some cases when the layout item also inherits from QGraphicsItem (such as QGraphicsWidget) there will be a ambiguity in ownership because the layout item belongs to two ownership hierarchies. See the documentation of QGraphicsLayoutItem::setOwnedByLayout() how to handle this. You can access each item in the layout by calling count() and itemAt(). Calling removeAt() will remove an item from the layout, without destroying it.

Size Hints and Size Policies in QGraphicsGridLayout

QGraphicsGridLayout respects each item's size hints and size policies, and when a cell in the grid has more space than the items can fill, each item is arranged according to the layout's alignment for that item. You can set an alignment for each item by calling setAlignment(), and check the alignment for any item by calling alignment(). You can also set the alignment for an entire row or column by calling setRowAlignment() and setColumnAlignment() respectively. By default, items are aligned to the top left.

See also QGraphicsLinearLayout and QGraphicsWidget.

Member Function Documentation

QGraphicsGridLayout::QGraphicsGridLayout(QGraphicsLayoutItem *parent = nullptr)

Constructs a QGraphicsGridLayout instance. parent is passed to QGraphicsLayout's constructor.

[virtual noexcept] QGraphicsGridLayout::~QGraphicsGridLayout()

Destroys the QGraphicsGridLayout object.

void QGraphicsGridLayout::addItem(QGraphicsLayoutItem *item, int row, int column, Qt::Alignment alignment = Qt::Alignment())

Adds item to the grid on row and column. You can specify an optional alignment for item.

void QGraphicsGridLayout::addItem(QGraphicsLayoutItem *item, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

Adds item to the grid on row and column. You can specify a rowSpan and columnSpan and an optional alignment.

Qt::Alignment QGraphicsGridLayout::alignment(QGraphicsLayoutItem *item) const

Returns the alignment for item.

See also setAlignment().

Qt::Alignment QGraphicsGridLayout::columnAlignment(int column) const

Returns the alignment for column.

See also setColumnAlignment().

int QGraphicsGridLayout::columnCount() const

Returns the number of columns in the grid layout. This is always one more than the index of the last column that is occupied by a layout item (empty columns are counted except for those at the end).

qreal QGraphicsGridLayout::columnMaximumWidth(int column) const

Returns the maximum width for column.

See also setColumnMaximumWidth().

qreal QGraphicsGridLayout::columnMinimumWidth(int column) const

Returns the minimum width for column.

See also setColumnMinimumWidth().

qreal QGraphicsGridLayout::columnPreferredWidth(int column) const

Returns the preferred width for column.

See also setColumnPreferredWidth().

qreal QGraphicsGridLayout::columnSpacing(int column) const

Returns the column spacing for column.

See also setColumnSpacing().

int QGraphicsGridLayout::columnStretchFactor(int column) const

Returns the stretch factor for column.

See also setColumnStretchFactor().

[override virtual] int QGraphicsGridLayout::count() const

Reimplements: QGraphicsLayout::count() const.

Returns the number of layout items in this grid layout.

qreal QGraphicsGridLayout::horizontalSpacing() const

Returns the default horizontal spacing for the grid layout.

See also setHorizontalSpacing().

[override virtual] void QGraphicsGridLayout::invalidate()

Reimplements: QGraphicsLayout::invalidate().

[override virtual] QGraphicsLayoutItem *QGraphicsGridLayout::itemAt(int index) const

Reimplements: QGraphicsLayout::itemAt(int i) const.

Returns the layout item at index, or nullptr if there is no layout item at this index.

QGraphicsLayoutItem *QGraphicsGridLayout::itemAt(int row, int column) const

Returns a pointer to the layout item at (row, column).

[override virtual] void QGraphicsGridLayout::removeAt(int index)

Reimplements: QGraphicsLayout::removeAt(int index).

Removes the layout item at index without destroying it. Ownership of the item is transferred to the caller.

See also addItem().

void QGraphicsGridLayout::removeItem(QGraphicsLayoutItem *item)

Removes the layout item item without destroying it. Ownership of the item is transferred to the caller.

See also addItem().

Qt::Alignment QGraphicsGridLayout::rowAlignment(int row) const

Returns the alignment of row.

See also setRowAlignment().

int QGraphicsGridLayout::rowCount() const

Returns the number of rows in the grid layout. This is always one more than the index of the last row that is occupied by a layout item (empty rows are counted except for those at the end).

qreal QGraphicsGridLayout::rowMaximumHeight(int row) const

Returns the maximum height for row, row.

See also setRowMaximumHeight().

qreal QGraphicsGridLayout::rowMinimumHeight(int row) const

Returns the minimum height for row, row.

See also setRowMinimumHeight().

qreal QGraphicsGridLayout::rowPreferredHeight(int row) const

Returns the preferred height for row, row.

See also setRowPreferredHeight().

qreal QGraphicsGridLayout::rowSpacing(int row) const

Returns the row spacing for row.

See also setRowSpacing().

int QGraphicsGridLayout::rowStretchFactor(int row) const

Returns the stretch factor for row.

See also setRowStretchFactor().

void QGraphicsGridLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)

Sets the alignment for item to alignment.

See also alignment().

void QGraphicsGridLayout::setColumnAlignment(int column, Qt::Alignment alignment)

Sets the alignment for column to alignment.

See also columnAlignment().

void QGraphicsGridLayout::setColumnFixedWidth(int column, qreal width)

Sets the fixed width of column to width.

void QGraphicsGridLayout::setColumnMaximumWidth(int column, qreal width)

Sets the maximum width of column to width.

See also columnMaximumWidth().

void QGraphicsGridLayout::setColumnMinimumWidth(int column, qreal width)

Sets the minimum width for column to width.

See also columnMinimumWidth().

void QGraphicsGridLayout::setColumnPreferredWidth(int column, qreal width)

Sets the preferred width for column to width.

See also columnPreferredWidth().

void QGraphicsGridLayout::setColumnSpacing(int column, qreal spacing)

Sets the spacing for column to spacing.

See also columnSpacing().

void QGraphicsGridLayout::setColumnStretchFactor(int column, int stretch)

Sets the stretch factor for column to stretch.

See also columnStretchFactor().

[override virtual] void QGraphicsGridLayout::setGeometry(const QRectF &rect)

Reimplements: QGraphicsLayoutItem::setGeometry(const QRectF &rect).

Sets the bounding geometry of the grid layout to rect.

void QGraphicsGridLayout::setHorizontalSpacing(qreal spacing)

Sets the default horizontal spacing for the grid layout to spacing.

See also horizontalSpacing().

void QGraphicsGridLayout::setRowAlignment(int row, Qt::Alignment alignment)

Sets the alignment of row to alignment.

See also rowAlignment().

void QGraphicsGridLayout::setRowFixedHeight(int row, qreal height)

Sets the fixed height for row, row, to height.

void QGraphicsGridLayout::setRowMaximumHeight(int row, qreal height)

Sets the maximum height for row, row, to height.

See also rowMaximumHeight().

void QGraphicsGridLayout::setRowMinimumHeight(int row, qreal height)

Sets the minimum height for row, row, to height.

See also rowMinimumHeight().

void QGraphicsGridLayout::setRowPreferredHeight(int row, qreal height)

Sets the preferred height for row, row, to height.

See also rowPreferredHeight().

void QGraphicsGridLayout::setRowSpacing(int row, qreal spacing)

Sets the spacing for row to spacing.

See also rowSpacing().

void QGraphicsGridLayout::setRowStretchFactor(int row, int stretch)

Sets the stretch factor for row to stretch.

See also rowStretchFactor().

void QGraphicsGridLayout::setSpacing(qreal spacing)

Sets the grid layout's default spacing, both vertical and horizontal, to spacing.

See also rowSpacing() and columnSpacing().

void QGraphicsGridLayout::setVerticalSpacing(qreal spacing)

Sets the default vertical spacing for the grid layout to spacing.

See also verticalSpacing().

[override virtual] QSizeF QGraphicsGridLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const

Reimplements: QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const.

qreal QGraphicsGridLayout::verticalSpacing() const

Returns the default vertical spacing for the grid layout.

See also setVerticalSpacing().