83.QGridLayout

本文详细介绍了QGridLayout的基本操作、元素管理、间距调整、信息获取及行列拉伸系数设置等内容。通过实例演示了如何添加控件、布局管理器,以及如何设置和获取间距。

目录

1  基本操作

1.1  构造函数

1.2  元素操作

1.2.1  控件 addWidget()

1.2.2  布局

1.2.3  获取

1.3  间距

1.3.1  纵向间距

1.3.2  横向间距

1.3.3  所有间距

1.4  信息获取

1.4.1  获取指定控件位置的对应矩形对象 cellRect()

1.4.2  获取列数 columnCount()

1.4.3  获取行数 rowCount()

1.5  原点角

1.5.1  获取 originCorner()

1.5.2  设置 setOriginCorner()

2  行宽列高的拉伸系数

2.1  指定列的最小宽度

2.1.1  设置 setColumnMinimumWidth()

2.1.2  获取 columnMinimumWidth()

2.2  列的拉伸系数

2.2.1  设置 setColumnStretch()

2.2.2  获取 columnStrectch()

2.3  指定行的最小高度

2.3.1  设置 setRowMinimumHeight()

2.3.2  获取 rowMinimumHeight()

2.4  行的拉伸系数

2.4.1  设置 setRowStretch()

2.4.2  获取 rowStretch()


1  基本操作

1.1  构造函数

我们现在简单用一下

1.2  元素操作

1.2.1  控件 addWidget()

有三种写法

  • addWidget(self,QWidget)

后面直接接一个控件,这个方法之前用过,不多介绍了

  • addWidget(self, a0: QWidget, row: int, column: int, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag] = ...)

这种写法后面多跟了几个参数,含义如下

  • 要添加的控件
  • 对齐方式

现在我们把label2加到第0行,第1列,中心对齐

加之前是这样的

  • addWidget(self, a0: QWidget, row: int, column: int, rowSpan: int, columnSpan: int, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag] = ...)

这样写多加了两个参数,所有参数如下所示

  • 要添加的控件
  • 跨越多少行
  • 跨越多少列
  • 对齐方式

加之前是这样的

现在我们加入第0行,第2列,跨越50行,跨越30列,中心对齐

如果都不加中心对齐是这样的

1.2.2  布局

我们首先创建一个布局管理器

  • addLayout(self, a0: QLayout, row: int, column: int, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag] = ...)

加之前是这样的

我们现在将这个布局管理器加到第1行,第0列,中心对齐

  • addLayout(self, a0: QLayout, row: int, column: int, rowSpan: int, columnSpan: int, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag] = ...)

这个方法比上面的那个多加了跨越多少行和跨越多少列,我直接举个例子测试一下

没加前是这样的

我们现在把布局管理器放在第1行,第0为,跨越50行,跨越100列,中心对齐

如果都不放中心对齐是这样的

  • QGridLayout如果在插入控件中有空行或者空列会自动删除掉,然后后面的控件补上

1.2.3  获取

1.2.3.1  位置获取 getItemPosition()

它的参数是布局管理器的第几个元素

想这个图标签1就是第0个控件,标签2是第一个控件,标签3是第二个控件

我们现在获取标签三的位置

这个返回值的意思是它起始于第0行,第2列,跨越50行,30列

1.2.3.2  条目获取 itemAtPosition()

这个方法是获取指定行列的内容

我们现在获取第0行,第0列的内容

1.3  间距

1.3.1  纵向间距

1.3.1.1  设置 setVerticalSpacing()

设置前是这样的

现在我们设置列间距为50

1.3.1.2  获取 verticalSpacing()

1.3.2  横向间距

1.3.2.1  设置 setHorizontalSpacing()

设置前是这样的

我们现在设置横向间距为100

1.3.2.2  获取 horizontalSpacing()

1.3.3  所有间距

1.3.3.1  设置 setSpacing()

设置之前是这样的

我们现在设置所有间距为50

1.3.3.2  获取 spacing()

当水平间距与竖直间距不一致时,会返回-1

1.4  信息获取

当前的窗口是这样的

1.4.1  获取指定控件位置的对应矩形对象 cellRect()

  • 这个功能只能在控件展示出来之后使用才有效

我们把它放在window,show()的下面

1.4.2  获取列数 columnCount()

1.4.3  获取行数 rowCount()

1.5  原点角

我们可以将原点置于上左,上右,下左,下右四角中的一角

下面的两个方法都涉及到一个变量Qt.Corner 可选的值如下

  • 0 - Qt.TopLeftCorner 左上角
  • 1 - Qt.TopRightCorner 右上角
  • 2 - Qt.BottomLeftCorner 左下角
  • 3 - Qt.BottomRightCorner 右下角

1.5.1  获取 originCorner()

1.5.2  设置 setOriginCorner()

现在我们设置原角点为左下角

2  行宽列高的拉伸系数

2.1  指定列的最小宽度

设置之前我们是这个样子的

2.1.1  设置 setColumnMinimumWidth()

我们现在设置第0列的最小宽度为300

2.1.2  获取 columnMinimumWidth()

2.2  列的拉伸系数

2.2.1  设置 setColumnStretch()

  • 在其他列不设置拉伸系数是,其他列默认为最小尺寸

2.2.2  获取 columnStrectch()

现在我们获取第0列的拉伸系数

2.3  指定行的最小高度

2.3.1  设置 setRowMinimumHeight()

我们现在设置第0行的最小宽度为100

2.3.2  获取 rowMinimumHeight()

我们现在获取第0行的最小宽度

2.4  行的拉伸系数

2.4.1  设置 setRowStretch()

我们现在对第0行设置拉伸系数

  • 其他未设置拉伸系数的行为最小尺寸

2.4.2  获取 rowStretch()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值