77-Layout布局-布局基类QLayout

布局基类QLayout

QLayout类是几何图形管理器的基类

子类包含:QStackedLayout, QGridLayout, QFormLayout, QBoxLayout, QVBoxLayout, QHBoxLayout

from PySide6.QtWidgets import QLayout

QLayout(parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)

这是一个抽象基类,由具体类QBoxLayout、QGridLayout、QFormLayout和QStackedLayout继承。

对于QLayout子类或QMainWindow的用户来说,很少需要使用QLayout提供的基本函数,如setSizeConstraint或setMenuBar。有关详细信息,请参见布局管理。

要制作自己的布局管理器,请实现函数addItem、sizeHint、setGeometry、itemAt和takeAt。您还应该实现minimumSize,以确保在空间太小的情况下不会将布局调整为零大小。要支持身高取决于宽度的儿童,请实现hasHeightForWidth和heightForWidth。有关实现自定义布局管理器的更多信息,请参见边界布局和流布局示例。
删除布局管理器后,几何图形管理停止。

QLayout属性

属性描述功能访问
contentsMargins: PySide6.QtCore.QMarginscontentsMargins ()

setContentsMargins (margins)

unsetContentsMargins ()
sizeConstraint: SizeConstraint此属性保留布局的调整大小模式。
默认模式为SetDefaultConstraint。
sizeConstraint ()

setSizeConstraint (arg__1)
spacing: int此属性保留布局中小部件之间的间距。
如果没有显式设置值,则布局的间距将从父布局继承,或从父小部件的样式设置继承。
对于QGridLayout和QFormLayout,可以使用setHorizontalSpacing和setVerticalSpacing设置不同的水平和垂直间距。在这种情况下,spacing返回-1
spacing ()

setSpacing (arg__1)

QLayout方法

  • PySide6.QtWidgets.QLayout.SizeConstraint

    控件随窗口大小改变时尺寸的变化方式

    ConstantDescription
    QLayout.SetDefaultConstraint主小部件的最小大小设置为minimumSize,除非小部件已经有了最小大小。 控件的最小尺寸根据setMinimunSize(QSize)方法或setMinimunSize(int,int)方法设定的值确定;
    QLayout.SetFixedSize主窗口小部件的大小设置为sizeHint;它根本无法调整大小。
    QLayout.SetMinimumSize主窗口小部件的最小大小设置为minimumSize;它不能再小了。
    QLayout.SetMaximumSize主窗口小部件的最大大小设置为maximumSize;它不能再大了。
    QLayout.SetMinAndMaxSize主窗口小部件的最小大小设置为minimumSize,最大大小设置为maximumSize。
    QLayout.SetNoConstraint小部件不受约束。
方法描述
activate() -> bool如有必要,请重做parentWidget的布局。 您通常不需要调用它,因为它是在最合适的时间自动调用的。如果布局被重做,则返回true。
addChildLayout(l: PySide6.QtWidgets.QLayout)从子类中的addLayout或insertLayout。 唯一需要直接调用它的场景是,如果您实现了支持嵌套布局的自定义布局。
addChildWidget(w: PySide6.QtWidgets.QWidget)这个函数是从子类中的addWidget函数中调用的,用于添加w作为布局的托管小部件。 如果w已经由布局管理,则此函数将产生警告,并从该布局中删除w。因此,在将w添加到布局的数据结构之前,必须调用此函数。
addWidget(w: PySide6.QtWidgets.QWidget)以特定于布局的方式将小部件w添加到此布局中。此函数使用addItem。
adoptLayout(layout: PySide6.QtWidgets.QLayout) -> bool获取是否采用布局
alignmentRect(arg__1: PySide6.QtCore.QRect) -> PySide6.QtCore.QRect返回此布局的几何体设置为r时应覆盖的矩形,前提是此布局支持setAlign。 结果是从sizeHint和expanding派生而来的。它永远不会大于r。
contentsMargins() -> PySide6.QtCore.QMargins返回布局周围使用的边距。 默认情况下,QLayout使用样式提供的值。在大多数平台上,所有方向的边距都是11个像素。
contentsRect() -> PySide6.QtCore.QRect返回布局的geometry矩形,但要考虑内容边距。
isEnabled() -> bool如果已启用布局,则返回true;否则返回false。
menuBar() -> PySide6.QtWidgets.QWidget返回为此布局设置的菜单栏,如果未设置菜单栏,则返回"无"。
parentWidget() -> PySide6.QtWidgets.QWidget返回此布局的父小部件,如果任何小部件上都没有安装此布局,则返回"无"。 如果布局是子布局,则此函数返回父布局的父小部件。
removeItem(arg__1: PySide6.QtWidgets.QLayoutItem)从布局中删除布局项项目。调用者有责任删除该项。 请注意,项可以是布局因为QLayout继承了QLayoutItem。
removeWidget(w: PySide6.QtWidgets.QWidget)从布局中删除小部件。在这个调用之后,调用者有责任给小部件一个合理的几何图形,或者将小部件放回布局中,或者在必要时显式隐藏它。
setAlignment(arg__1: PySide6.QtCore.Qt.AlignmentFlag) setAlignment(l: PySide6.QtWidgets.QLayout, alignment: PySide6.QtCore.Qt.AlignmentFlag) -> bool setAlignment(w: PySide6.QtWidgets.QWidget, alignment: PySide6.QtCore.Qt.AlignmentFlag) -> bool设置布局对齐方式 这是一个重载函数。将布局l的对齐方式设置为对齐,如果在此布局中找到l不包括子布局,则返回true;否则返回false。 将小部件w的对齐方式设置为对齐,如果在此布局中找到w不包括子布局,则返回true;否则返回false。
setContentsMargins(left: int, top: int, right: int, bottom: int) setContentsMargins(margins: PySide6.QtCore.QMargins)设置要在布局周围使用的左、上、右和下边距。默认情况下,QLayout使用样式提供的值。在大多数平台上,所有方向的边距都是11个像素。 设置要在布局周围使用的边距。默认情况下,QLayout使用样式提供的值。在大多数平台上,所有方向的边距都是11个像素。
setEnabled(arg__1: bool)如果enable为true,则启用此布局,否则禁用此布局。 启用的布局会根据变化进行动态调整;被禁用的布局就好像它不存在一样。 默认情况下,所有布局都处于启用状态。
setMenuBar(w: PySide6.QtWidgets.QWidget)告诉几何体管理器将菜单栏小部件放置在parentWidget的顶部,在contentsMargins之外。所有子窗口小部件都放置在菜单栏的底部边缘下方。
setSizeConstraint(arg__1: PySide6.QtWidgets.QLayout.SizeConstraint)属性sizeConstraint的设置器。
sizeConstraint() -> PySide6.QtWidgets.QLayout.SizeConstraint属性sizeConstraint的Getter。
totalHeightForWidth(w: int) -> int宽度总计
totalMaximumSize() -> PySide6.QtCore.QSize总最大尺寸
totalMinimumHeightForWidth(w: int) -> int总最小宽度
totalMinimumSize() -> PySide6.QtCore.QSize总最小大小
totalSizeHint() -> PySide6.QtCore.QSize获取尺寸QSize
unsetContentsMargins()取消设置布局周围的任何用户定义的边距。布局将使用样式提供的默认值。
update()更新parentWidget() 的布局。 您通常不需要调用此,因为它是在最适当的时间自动调用的。
widgetEvent(arg__1: PySide6.QtCore.QEvent)
addItem(arg__1: PySide6.QtWidgets.QLayoutItem)在子类中实现以添加项目。它的添加方式特定于每个子类。 这个函数通常不会在应用程序代码中调用。要将小部件添加到布局中,请使用addWidget() 函数; 要添加子布局,请使用相关QLayout子类提供的addLayout() 函数。
count() -> int必须在子类中实现以返回布局中的项目数。
indexOf(arg1: PySide6.QtWidgets.QLayoutItem) -> int indexOf(arg1: PySide6.QtWidgets.QWidget) -> int在此布局中搜索小部件 (不包括子布局)。 返回widget的索引,如果找不到widget,则返回-1。 默认实现使用itemAt() 遍历所有项目。
itemAt(index: int) -> PySide6.QtWidgets.QLayoutItem必须在子类中实现才能在索引处返回布局项。如果没有此类项,则该函数必须返回None。项目从0开始连续编号。如果一个项目被删除,其他项目将被重新编号。 此函数可用于迭代布局。下面的代码将为小部件的布局结构中的每个布局项绘制一个矩形。
必须在子类中实现才能在索引处返回布局项。如果没有此类项,则该函数必须返回None。项目从0开始连续编号。如果一个项目被删除,其他项目将被重新编号。 此函数可用于迭代布局。下面的代码将为小部件的布局结构中的每个布局项绘制一个矩形。
def paintLayout(painter, item):

layout = item.layout()
if layout:
for i in range(0, layout.count()):
paintLayout(painter, layout.itemAt(i))

painter.drawRect(item.geometry())

def paintEvent(, arg__0):

painter = QPainter()
if layout():
paintLayout(painter, layout())
replaceWidget(from_: PySide6.QtWidgets.QWidget, to: PySide6.QtWidgets.QWidget, options: PySide6.QtCore.Qt.FindChildOption = Instance(Qt.FindChildrenRecursively)) -> PySide6.QtWidgets.QLayoutItem搜索widget从,并将其替换为widget到,如果找到。从成功开始返回包含小部件的布局项。否则将返回None。如果options包含Qt:: findchildren递归 (默认),则搜索子布局以进行替换。选项中的任何其他标志都将被忽略。 请注意,因此返回的项目可能不属于此布局,而是属于子布局。 返回的布局项不再属于布局,应该删除或插入到另一个布局中。来自的小部件不再由布局管理,可能需要删除或隐藏。widget ffent的父级保持不变。 此函数适用于内置的Qt布局,但可能不适用于自定义布局。
setSpacing(arg__1: int)属性间距的设置器。
spacing() -> int属性间距的吸气剂。
takeAt(index: int) -> PySide6.QtWidgets.QLayoutItem必须在子类中实现,以从布局中删除索引处的布局项,并返回该项。如果没有此类项目,则该函数必须不执行任何操作,并返回0。项目从0开始连续编号。如果某个项目被移除,其他项目将被重新编号。 下面的代码片段显示了从布局中删除所有项目的安全方法: 必须在子类中实现,以从布局中删除索引处的布局项,并返回该项。如果没有此类项目,则该函数必须不执行任何操作,并返回0。项目从0开始连续编号。如果某个项目被移除,其他项目将被重新编号。 下面的代码片段显示了从布局中删除所有项目的安全方法:
child = QLayoutItem()
while (child = layout.takeAt(0)) != None:

del child.widget() # del the widget
del child # del the layout item
[Static]closestAcceptableSize(w: PySide6.QtWidgets.QWidget, s: PySide6.QtCore.QSize) -> PySide6.QtCore.QSize返回满足小部件上的所有大小约束的大小,包括heightForWidth(),并且尽可能接近大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

士别三日,当挖目相待

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

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

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

打赏作者

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

抵扣说明:

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

余额充值