Qt系列文章目录

文章目录

前言

Qt中经常使用网格布局QGridLayout,并在网格中依次加入控件,我们可以依次定义行列排序

一、QGridLayout::addWidget

​QGridLayout::addWidget 官方解释​

QGridLayout::addWidget 的使用详解_addWidget


可以看到有2个重载版本:

1.void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())

Adds the given widget 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.
翻译:
将给定的小部件添加到单元格网格的行、列。默认情况下,左上角位置为(0,0)。
对齐由对齐指定。默认对齐方式为0,这意味着小部件将填充整个单元格。

2.void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

翻译:。
此版本将给定的小部件添加到单元格网格,跨越多行/列。该单元格将从fromRow、fromColumn开始,跨越rowSpan行和columnSpan列。小部件将具有给定的对齐方式。
如果rowSpan和/或columnSpan为-1,则小部件将分别扩展到底部和/或右边缘。

二、使用步骤

1.第一个版本:

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

这个版本对应的行列规则的情况。

QGridLayout::addWidget 的使用详解_QGridLayout_02

QGridLayout* gridlayout=new QGridLayout;
gridlayout->addWidget(m_lab_Near, 0, 0);
gridlayout->addWidget(m_spinbox_Near, 0, 1);
gridlayout->addWidget(m_lab_Far, 1, 0);
gridlayout->addWidget(m_spinbox_Far, 1, 1);

2.第二个版本

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

这个版本对应行列不规则的情况

QGridLayout::addWidget 的使用详解_控件_03


如上图,红色表示坐标,窗口1横向跨越了2个单元格,那么 int rowSpan = 2 ;纵向跨越了2个单元格, 那么int columnSpan = 2

此窗口产生的代码如下:

* gridLayout = new QGridLayout;
QWidget widget1;
QWidget widget2;
QWidget widget3;
QWidget widget4;
QWidget widget5;
QWidget widget6;

gridLayout->addWidget(widgets1, 0, 0, 2, 2); //窗口1
gridLayout->addWidget(widgets2, 0, 2, 1, 1); //窗口2
gridLayout->addWidget(widgets3, 1, 2, 1, 1); //窗口3
gridLayout->addWidget(widgets4, 2, 0, 1, 1); //窗口4
gridLayout->addWidget(widgets5, 2, 1, 1, 1); //窗口5
gridLayout->addWidget(widgets6, 2, 2, 1, 1); //窗口6

参考

​zsiming​