QGridLayout类
QGridLayout类以网格布局小部件。 更多...
头文件 | #include <QGridLayout> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QLayout |
属性
- horizontalSpacing : int
- verticalSpacing : int
公共函数
QGridLayout(QWidget *parent = nullptr) | |
virtual | ~QGridLayout() |
void | addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()) |
void | addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
void | addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
void | addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
void | addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
QRect | cellRect(int row, int column) const |
int | columnCount() const |
int | columnMinimumWidth(int column) const |
int | columnStretch(int column) const |
void | getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const |
int | horizontalSpacing() const |
QLayoutItem * | itemAtPosition(int row, int column) const |
Qt::Corner | originCorner() const |
int | rowCount() const |
int | rowMinimumHeight(int row) const |
int | rowStretch(int row) const |
void | setColumnMinimumWidth(int column, int minSize) |
void | setColumnStretch(int column, int stretch) |
void | setHorizontalSpacing(int spacing) |
void | setOriginCorner(Qt::Corner corner) |
void | setRowMinimumHeight(int row, int minSize) |
void | setRowStretch(int row, int stretch) |
void | setVerticalSpacing(int spacing) |
int | verticalSpacing() const |
重写的公共函数
virtual int | count() const override |
virtual Qt::Orientations | expandingDirections() const override |
virtual bool | hasHeightForWidth() const override |
virtual int | heightForWidth(int w) const override |
virtual void | invalidate() override |
virtual QLayoutItem * | itemAt(int index) const override |
virtual QSize | maximumSize() const override |
virtual int | minimumHeightForWidth(int w) const override |
virtual QSize | minimumSize() const override |
virtual void | setGeometry(const QRect &rect) override |
virtual void | setSpacing(int spacing) override |
virtual QSize | sizeHint() const override |
virtual int | spacing() const override |
virtual QLayoutItem * | takeAt(int index) override |
重写的受保护函数
virtual void | addItem(QLayoutItem *item) override |
详细描述
QGridLayout占用其父布局或parentWidget()提供的空间,将其划分为行和列,并将每个它管理的控件放入正确的单元格中。
列和行行为相同;我们将讨论列,但存在对应行的函数。
每个列都有一个最小宽度和拉伸因子。最小宽度是通过使用setColumnMinimumWidth()设置的值和该列中每个控件的最小宽度中的较大值来确定的。拉伸因子通过使用setColumnStretch()设置,并确定列将获得多少超出其必要最小值的空间。
通常,每个被管理的控件或布局都使用addWidget()放入自己的单元格中。控件也可以通过使用addItem()和addWidget()的重载扩展到多个单元格。如果您这样做,QGridLayout将根据拉伸因子猜测如何分配大小到列/行。
要从布局中移除控件,请调用removeWidget()。在控件上调用QWidget::hide()也将有效地从布局中移除控件,直到调用QWidget::show()。
此图例显示了一个具有五列、三行网格(网格以洋红色叠加显示)的对话框片段。
本对话框片段中的第0列、第2列和第4列由一个QLabel、一个QLineEdit和一个QListBox组成。第1列和第3列是由setColumnMinimumWidth()设置的占位符。第0行由三个QLabel对象组成,第1行由三个QLineEdit对象组成,第2行由三个QListBox对象组成。我们使用了占位符列(第1列和第3列)来获得适当的列间距。
请注意,列和行的高宽并不相同。如果你想使两列的宽度相同,你必须自己将它们的宽度和拉伸因子设置成一样。这是通过使用setColumnMinimumWidth()和setColumnStretch()来实现的。
如果QGridLayout不是顶级布局(即不管理窗口的全部区域和子项),则在创建它时,必须将其添加到其父布局中,但在对其进行任何操作之前。添加布局的常规方法是在父布局上调用addLayout()。
一旦添加了布局,您就可以使用addWidget()、addItem()和addLayout()将小部件和其他布局放入网格布局的单元格中。
QGridLayout还包括两个边缘宽度:内容边缘contents margin和间隔spacing。内容边缘是沿着QGridLayout的四个边缘保留的空间宽度。间隔是相邻框之间自动分配的空间宽度。
默认内容边缘值由style提供。Qt样式指定的默认值是9(对于子小部件)和11(对于窗口)。间隔默认值与顶级布局的边距宽度相同,或者与父布局相同。
另请参阅QBoxLayout、QStackedLayout、布局管理和基本布局示例。
属性文档
horizontalSpacing : int
此属性保存了并排排列的 widget 之间的间距
如果没有显式设置值,布局的水平间距将从父布局或父小部件的样式设置继承。
访问函数
int | horizontalSpacing() const |
void | setHorizontalSpacing(int spacing) |
另请参阅verticalSpacing、QStyle::pixelMetric()和PM_LayoutHorizontalSpacing。
verticalSpacing : int
此属性保存了上下排列的 widget 之间的间距
如果没有显式设置值,布局的垂直间距将从父布局或父小部件的样式设置继承。
访问函数
int | verticalSpacing() const |
void | setVerticalSpacing(int spacing) |
另请参阅horizontalSpacing、QStyle::pixelMetric()和PM_LayoutHorizontalSpacing。
成员函数文档
[显式]
QGridLayout::QGridLayout(QWidget *parent = nullptr)
使用父控件parent构建一个新的QGridLayout。布局初始时有一行一列,当插入新项目时会扩展。
直接将布局设置为parent的最顶级布局。每个控件只能有一个最顶级布局。它由QWidget::layout()返回。
如果parent是nullptr
,则必须将此网格布局插入到另一个布局中,或者使用QWidget::setLayout()将其设置为控件布局。
另请参阅QWidget::setLayout().
[虚拟 noexcept]
QGridLayout::~QGridLayout()
如果这是顶级网格,则终止几何管理。
布局的控件不会被销毁。
void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
在row,column位置添加item,跨越rowSpan行和columnSpan列,并根据alignment对其对齐。如果rowSpan和/或columnSpan是-1,则该项目将扩展到底部/右侧边缘。布局会拥有item的所有权。
警告:不要使用该函数添加子布局或子控件项。请使用addLayout()或addWidget()代替。
[重载虚拟受保护]
void QGridLayout::addItem(QLayoutItem *item)
重新实现:QLayout::addItem(QLayoutItem *item).
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
将布局layout放在网格的row,(i translate="no">column)位置。左上位置是(0, 0)。
对齐由alignment指定。默认对齐是0,表示控件填充整个单元格。
非零对齐表示布局不应扩展以填充可用空间,而应根据sizeHint大小对齐。
layout成为网格布局的子布局。
void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
这是一个重载函数。
此版本将布局layout添加到多行/多列的单元格网格中。单元格将从row,(i translate="no">column)开始,跨越rowSpan行和columnSpan列。
如果rowSpan和/或columnSpan是-1,则布局将扩展到底部/右侧边缘。
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
将指定的 widget 添加到行 row 和列 column 的网格单元格中。默认情况下,左上角位置是 (0, 0)。
对齐由alignment指定。默认对齐是0,表示控件填充整个单元格。
void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
这是一个重载函数。
此版本将指定的 widget 添加到网格单元格中,跨越多个行/列。单元格将从 fromRow、fromColumn 开始,跨越 rowSpan 行和 columnSpan 列。 widget 将具有给定的 alignment。
如果 rowSpan 和/或 columnSpan 为 -1,则 widget 将扩展到底部和/或右侧边缘。
QRect QGridLayout::cellRect(int row, int column) const
返回网格中行 row 和列 column 的单元格的几何形状。如果 row 或 column 超出网格范围,则返回无效矩形。
警告: 在当前版本的 Qt 中,此函数在调用 setGeometry() 后才返回有效结果,即 parentWidget() 可见之后。
int QGridLayout::columnCount() const
返回此网格中的列数。
int QGridLayout::columnMinimumWidth(int column) const
返回列 column 的列间距。
另请参阅 setColumnMinimumWidth().
int QGridLayout::columnStretch(int column) const
返回列 column 的扩展因子。
另请参阅 setColumnStretch().
[重写虚函数]
int QGridLayout::count() const
重新实现: QLayout::count() const.
[重写虚函数]
Qt::Orientations QGridLayout::expandingDirections() const
重新实现: QLayout::expandingDirections() const.
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
返回具有给定 index 的项的位置信息。
通过 row 和 column 作为变量传递,更新项在布局中的位置,将 rowSpan 和 columnSpan 变量更新为项的垂直和水平跨度。
另请参阅 itemAtPosition() 和 itemAt().
[覆盖虚函数]
bool QGridLayout::hasHeightForWidth() const
重新实现: QLayoutItem::hasHeightForWidth() const.
[覆盖虚函数]
int QGridLayout::heightForWidth(int w) const
重新实现: QLayoutItem::heightForWidth(int) const.
[覆盖虚函数]
void QGridLayout::invalidate()
重新实现: QLayout::invalidate().
[覆盖虚函数]
QLayoutItem *QGridLayout::itemAt(int index) const
重新实现: QLayout::itemAt(int index) const.
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
返回占用了单元格 (row, column) 的布局项,或者如果单元格为空则返回 nullptr
。
另请参阅 getItemPosition() 和 indexOf().
[覆盖虚函数]
QSize QGridLayout::maximumSize() const
重新实现: QLayout::maximumSize() const.
[覆盖虚函数]
int QGridLayout::minimumHeightForWidth(int w) const
重新实现: QLayoutItem::minimumHeightForWidth(int w) const.
[覆盖虚函数]
QSize QGridLayout::minimumSize() const
重新实现: QLayout::minimumSize() const.
Qt::Corner QGridLayout::originCorner() const
返回用于网格原点(即位置(0,0))的角。
另请参阅 setOriginCorner().
int QGridLayout::rowCount() const
返回网格中的行数。
int QGridLayout::rowMinimumHeight(int row) const
返回设置给行 row 的最小宽度。
另请参阅 setRowMinimumHeight().
int QGridLayout::rowStretch(int row) const
返回行 row 的伸缩因子。
另请参阅 setRowStretch().
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
将列column的最小宽度设置为minSize像素。
另请参阅:columnMinimumWidth() 和 setRowMinimumHeight。
void QGridLayout::setColumnStretch(int column, int stretch)
将列column的拉伸因子设置为stretch。第一列的编号是0。
拉伸因子相对于此网格中的其他列。具有更高拉伸因子的列将获得更多的可用空间。
默认的拉伸因子是0。如果拉伸因子为0且此表中的其他任何列都无法增长,则列仍然可以增长。
另一种方法是通过使用addItem()和一个QSpacerItem添加间隔。
另请参阅:columnStretch() 和 setRowStretch。
[重写虚函数]
void QGridLayout::setGeometry(const QRect &rect)
重实现了: QLayout::setGeometry(const QRect &r)。
void QGridLayout::setOriginCorner(Qt::Corner corner)
将网格的起始角(即位置(0, 0))设置为corner。
另请参阅:originCorner。
void QGridLayout::setRowMinimumHeight(int row, int minSize)
将行row的最小高度设置为minSize像素。
另请参阅:rowMinimumHeight() 和 setColumnMinimumWidth。
void QGridLayout::setRowStretch(int row, int stretch)
将行row的拉伸因子设置为stretch。第一行的编号是0。
拉伸因子相对于此网格中的其他行。具有更高拉伸因子的行将获得更多的可用空间。
默认的拉伸因子是0。如果拉伸因子为0且此表中的其他任何行都无法增长,则行仍然可以增长。
另请参阅:rowStretch、setRowMinimumHeight 和 setColumnStretch。
[重写虚函数]
void QGridLayout::setSpacing(int spacing)
重实现了属性访问函数: QLayout::spacing。
此函数将垂直和水平间隔都设置为spacing。
另请参阅:spacing、setVerticalSpacing 和 setHorizontalSpacing。
[重写虚函数]
QSize QGridLayout::sizeHint() const
重实现了: QLayoutItem::sizeHint() const。
[重写虚函数]
int QGridLayout::spacing() const
重实现了属性访问函数: QLayout::spacing。
如果垂直间距等于水平间距,此函数返回该值;否则返回 -1。
另请参阅setSpacing(),verticalSpacing() 和 horizontalSpacing。
[重写虚函数]
QLayoutItem *QGridLayout::takeAt(int index)
重写自:QLayout::takeAt(int index)。
© 2024 The Qt Company Ltd. 本文档中包含的贡献文档的版权归其各自的拥有者所有。所提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款许可的。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。