喀什住房和城乡建设局网站,wordpress 开启模板,网站 wap 插件,eclipse可以做网站嘛一、QGridLayout的介绍#xff08;官翻#xff09;
QGridLayout 获得可用的空间#xff08;由其父布局或 parentWidget() 提供#xff09;#xff0c;将其划分为行和列#xff0c;并将其管理的每个小部件放入正确的单元格中。 列和行的行为是相同的#xff1b;我们将…一、QGridLayout的介绍官翻
QGridLayout 获得可用的空间由其父布局或 parentWidget() 提供将其划分为行和列并将其管理的每个小部件放入正确的单元格中。 列和行的行为是相同的我们将讨论列但行也有等效的功能。 每列都有最小宽度和拉伸系数。最小宽度是使用 setColumnMinimumWidth() 设置的宽度和该列中每个小部件的最小宽度中的最大值。拉伸因子使用setColumnStretch()设置并确定列将获得多少可用空间超过其必要的最小值。 通常每个托管控件或布局都使用 addWidget() 放入自己的单元格中。通过使用 addItem() 和 addWidget() 的行和列跨度重载小部件也可以占用多个单元格。如果你这样做QGridLayout会猜测如何在列/行上分配大小基于拉伸因子。 要从布局中删除小部件请调用 removeWidget() 。在 widget 上调用 hide() 也会有效地从布局中删除该 widget直到调用 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还包括两个边距宽度内容边距和间距。内容边距是沿 QGridLayout 四边预留空间的宽度。间距()是相邻方框之间自动分配的间距的宽度。 默认的内容边距值由样式提供。Qt样式指定的默认值是子控件为9窗口为11。间距默认值与顶级布局的边距宽度相同或与父布局相同。。
二、QGridLayout的相关方法
1.QGridLayout的创建及基本使用 API函数 参数说明 返回值 功能作用 QGridLayout(self,parent) parent:QWidget None 创建网格布局实例 addWidget(self,w,row,column, rowspanNone,columnspanNone, alignmentDeafult(Qt.Alignment)) w:QWidget row:int column:int rowspan:int column:int alignmen:Qt.Alignmen None 按照行列索引位置添加控件 addLayout(self,l,row,column, rowspanNone,columnspanNone, alignmentDeafult(Qt.Alignment)) w:l row:int column:int rowspan:int column:int alignmen:Qt.Alignmen None 按照行列索引位置添加子布局 行、列的索引均从0开始最上面一行为第0行而非第1行最左侧一列为第0列而非第1列。
rowspan和columnspan两个参数的意义是加入的这个控件所占位置跨几行或几列。比如下例中的日历控件其columnspan2即其站一行两列的位置。好比我们在excel中将一行的两个列单元格合并形成的控件分配给日历控件。
Alignment参数针对控件内容的对齐方式通常不做设置。
example
from PySide6.QtWidgets import QWidget,QApplication,QGridLayout,QPushButton,
QLabel,QLineEdit,QCalendarWidget
from PySide6.QtCore import Qt
import sysclass MyWindow(QWidget):def __init__(self):super(MyWindow, self).__init__()# 创建一个网格布局lay QGridLayout(self)# 创建2各标签、2个单行文本框、2个按钮和1个日历控件lab1 QLabel(账号)lab2 QLabel(密码)line1 QLineEdit()line2 QLineEdit()calendar_1 QCalendarWidget()btn1 QPushButton(确定)btn2 QPushButton(取消)# 将控件通过索引放置相应位置中lay.addWidget(lab1, 0, 0, Qt.AlignmentFlag.AlignRight)lay.addWidget(line1, 0, 1)lay.addWidget(lab2, 1, 0, Qt.AlignmentFlag.AlignRight)lay.addWidget(line2, 1, 1)lay.addWidget(btn1, 2, 0)lay.addWidget(btn2, 2, 1)lay.addWidget(calendar_1,3,0,1,2)if __name__ __main__:app QApplication(sys.argv)win MyWindow()win.show()sys.exit(app.exec())
运行结果 2.QGridLayout的其他相关方法 API函数 参数说明 返回值 功能作用 setGeometry(self, arg__1) arg_1:QRect None 设置网格布局大小 setRowMinimumHeight(self, row, minSize) row:int minSize:int None 设置索引行的最小行高 rowMinimumHeight(self, row) row:int int 获取索引行的最小行高 setColumnMinimumWidth(self, column, minSize) column:int minSize:int None 设置索引行的最小行高 columnMinimumWidth(self, column) column:int int 获取索引行的最小行高 setContentsMargins(self, left, top, right, bottom) left:int top:int ringhtLint bottom:int None 设置布局的内容边距参数为左上右下的尺寸 setContentsMargins(self, margins) margins:QMargin None 设置布局的内容编剧参数为QMargin对象 getContentsMargins(self): None tupe(left,top, right,bottom) 以元组形式返回布局内容边距的四边值 contentsMargins(self) None QMargin 获取一个布局的内容边距 unsetContentsMargins(self) None None 取消设置布局周围的任何用户定义的边距。布局将使用样式提供的默认值。 setsapcingself,spacing spacing:int None 设置布局控件间的空白间距水平及垂直 spacing(self) None spacing:int 获取布局控件间的空白间距水平及垂直 setHorizontalSpacing(self, spacing) spacing:int None 设置布局控件间的水平空白间距列间距 setVerticalSpacing(self, spacing) spacing:int None 设置布局控件间的垂直空白间距行间距 setRowStretch(self, row, stretch) row:int stretch:int None 设置索引行的伸缩因子 rowStretch(self, row) row:int stretch:int 获取索引行的伸缩因子 setColumnStretch(self, column, stretch) column:int stretch:int None 设置索引列的伸缩因子 columnStretch(self, column) column:int stretch:int 获取索引列的伸缩因子 cellRect(self, row, column) row:int column:int QRect 返回索引位置的单元格矩形 count(self) None int 获取布局内控件数量 rowCount(self) None Int 获取布局行数 columnCount(self) None Int 获取布局列数 getItemPosition(self, idx) idx:int tuple(row:int column:int rowspan:int columnspan:int) 通过条目索引获取该位置的信息返回值是一个包含行、列、跨行数、跨列数的元组 itemAtPosition(self, row, column) rowint column:int QLayoutItem 返回索引位置的条目对象 removeWidget(self,w) w:QWidget None 移除布局的子控件w replaceWidget(from,to,option) from:QWidget to:QWidgetoption: Qt.FindChildOption option为枚举类 QLayoutItem 搜索小部件from并将其替换为小部件to。成功时返回包含小部件的布局项。否则返回None。 返回的布局项不再属于该布局应该删除或插入到另一个布局中。小部件from不再由布局管理可能需要删除或隐藏。widget from的父类保持不变。 此函数适用于内置Qt布局但可能不适用于自定义布局。 setOriginCorner(self, arg__1) arg_1:Qt.Corner Qt枚举类 None 设置布局矩形的原点角 originCornerself None Qt.Corner 获取布局矩形的原点角 这些方法中尺寸因子和空白的设置在上节中已经详细的进行了解释。其他的相关方法在表中功能作用栏基本已经说明这里不再讲解。