在本页

QGraphicsGridLayout Class

QGraphicsGridLayout 类为管理图形视图中的部件提供了网格布局。更多

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

公共函数

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

重新实现的公共函数

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

详细说明

使用 QGraphicsGridLayout 的最常见方法是在堆上构造一个对象,将父部件传递给构造函数,然后通过调用addItem() 添加部件和布局。在添加项目时,QGraphicsGridLayout 会自动计算网格的尺寸。

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

另外,如果没有向布局的构造函数传递父部件,则需要调用QGraphicsWidget::setLayout() 将此布局设置为该部件的顶层布局,该部件将获得布局的所有权。

布局拥有项的所有权。在某些情况下,当布局项也继承自QGraphicsItem 时(如QGraphicsWidget ),由于布局项属于两个所有权层级,因此在所有权方面会出现歧义。请参阅QGraphicsLayoutItem::setOwnedByLayout() 的文档,了解如何处理这种情况。您可以通过调用count() 和itemAt() 访问布局中的每个项目。调用removeAt() 将从布局中移除一个项目,但不会销毁它。

QGraphicsGridLayout 中的尺寸提示和尺寸策略

QGraphicsGridLayout 尊重每个项的尺寸提示和尺寸策略,当网格中某个单元格的空间超过了项所能填充的空间时,每个项将根据布局的对齐方式进行排列。你可以通过调用setAlignment() 为每个项目设置对齐方式,也可以通过调用alignment() 检查任何项目的对齐方式。还可以通过调用setRowAlignment() 和setColumnAlignment() 分别设置整行或整列的对齐方式。默认情况下,项目的对齐方式为左上角对齐。

另请参阅 QGraphicsLinearLayout 和QGraphicsWidget 。

成员函数文档

QGraphicsGridLayout::QGraphicsGridLayout(QGraphicsLayoutItem *parent = nullptr)

构造一个 QGraphicsGridLayout 实例。parent 传递给QGraphicsLayout 的构造函数。

[virtual noexcept] QGraphicsGridLayout::~QGraphicsGridLayout()

销毁QGraphicsGridLayout 对象。

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

将item 添加到row 和column 的网格中。可以为item 指定一个可选的alignment 。

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

将item 添加到row 和column 的网格中。可以指定rowSpan 和columnSpan 以及可选的alignment 。

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

返回item 的对齐方式。

另请参见 setAlignment().

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

返回column 的对齐方式。

另请参见 setColumnAlignment().

int QGraphicsGridLayout::columnCount() const

返回网格布局中的列数。它总是比布局项占用的最后一列的索引多一列(空列除外)。

qreal QGraphicsGridLayout::columnMaximumWidth(int column) const

返回column 的最大宽度。

另请参阅 setColumnMaximumWidth() 。

qreal QGraphicsGridLayout::columnMinimumWidth(int column) const

返回column 的最小宽度。

另请参阅 setColumnMinimumWidth() 。

qreal QGraphicsGridLayout::columnPreferredWidth(int column) const

返回column 的首选宽度。

另请参阅 setColumnPreferredWidth() 。

qreal QGraphicsGridLayout::columnSpacing(int column) const

返回column 的列间距。

另请参阅 setColumnSpacing() 。

int QGraphicsGridLayout::columnStretchFactor(int column) const

返回column 的拉伸系数。

另请参见 setColumnStretchFactor().

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

重实现:QGraphicsLayout::count() 常量。

返回此网格布局中布局项的数量。

qreal QGraphicsGridLayout::horizontalSpacing() const

返回网格布局的默认水平间距。

另请参见 setHorizontalSpacing()。

[override virtual] void QGraphicsGridLayout::invalidate()

重新实现:QGraphicsLayout::invalidate().

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

重实现:QGraphicsLayout::itemAt(int i) const.

返回index 处的布局项,如果该索引处没有布局项,则返回nullptr 。

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

返回指向 (row,column) 处布局项的指针。

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

重实现:QGraphicsLayout::removeAt(int index)。

删除index 中的布局项,但不销毁该布局项。该项的所有权将转移给调用者。

另请参阅 addItem().

void QGraphicsGridLayout::removeItem(QGraphicsLayoutItem *item)

删除布局项item ,但不销毁该布局项。项目的所有权将转移给调用者。

另请参阅 addItem().

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

返回row 的对齐方式。

另请参见 setRowAlignment().

int QGraphicsGridLayout::rowCount() const

返回网格布局中的行数。它总是比布局项占用的最后一行的索引多一行(空行除外)。

qreal QGraphicsGridLayout::rowMaximumHeight(int row) const

返回行的最大高度,row 。

另请参阅 setRowMaximumHeight() 。

qreal QGraphicsGridLayout::rowMinimumHeight(int row) const

返回行的最小高度,row 。

另请参阅 setRowMinimumHeight() 。

qreal QGraphicsGridLayout::rowPreferredHeight(int row) const

返回行的首选高度,row 。

另请参阅 setRowPreferredHeight() 。

qreal QGraphicsGridLayout::rowSpacing(int row) const

返回row 的行间距。

另请参阅 setRowSpacing() 。

int QGraphicsGridLayout::rowStretchFactor(int row) const

返回row 的拉伸系数。

另请参见 setRowStretchFactor().

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

将item 的对齐方式设置为alignment 。

另请参见 alignment().

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

将column 的对齐方式设置为alignment 。

另请参见 columnAlignment().

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

将column 的固定宽度设置为width 。

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

将column 的最大宽度设置为width 。

另请参阅 columnMaximumWidth() 。

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

将column 的最小宽度设置为width 。

另请参阅 columnMinimumWidth() 。

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

将column 的首选宽度设置为width 。

另请参阅 columnPreferredWidth() 。

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

将column 的间距设置为spacing 。

另请参阅 columnSpacing() 。

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

将column 的拉伸系数设置为stretch 。

另请参阅 columnStretchFactor() 。

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

重实现:QGraphicsLayoutItem::setGeometry(const QRectF &rect).

将网格布局的边界几何图形设置为rect 。

void QGraphicsGridLayout::setHorizontalSpacing(qreal spacing)

将网格布局的默认水平间距设置为spacing 。

另请参阅 horizontalSpacing() 。

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

将row 的对齐方式设置为alignment 。

另请参见 rowAlignment().

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

将行的固定高度row 设置为height 。

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

将row 行的最大高度设置为height 。

另请参阅 rowMaximumHeight() 。

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

将row 行的最小高度设置为height 。

另请参阅 rowMinimumHeight() 。

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

将row 行的首选高度设置为height 。

另请参阅 rowPreferredHeight() 。

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

将row 的间距设置为spacing 。

另请参阅 rowSpacing() 。

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

将row 的拉伸系数设置为stretch 。

另请参阅 rowStretchFactor() 。

void QGraphicsGridLayout::setSpacing(qreal spacing)

将网格布局的默认垂直和水平间距设置为spacing 。

另请参阅 rowSpacing() 和columnSpacing()。

void QGraphicsGridLayout::setVerticalSpacing(qreal spacing)

将网格布局的默认垂直间距设置为spacing 。

另请参阅 verticalSpacing() 。

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

重实现:QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const.

qreal QGraphicsGridLayout::verticalSpacing() const

返回网格布局的默认垂直间距。

另请参见 setVerticalSpacing()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.