PyQt5中QLayout三类setAlignment重载方法的区别与适用场景问询
QLayout setAlignment 三类重载的作用与适用场景说明
1. bool QLayout::setAlignment(QWidget *w, Qt::Alignment alignment)
该接口就是你运行参数为1时调用的接口,作用是给当前布局内已添加的单个控件设置对齐规则,你测试的效果符合官方定义,适用场景为需要调整布局内单个独立控件的对齐规则时使用。
2. bool QLayout::setAlignment(QLayout *l, Qt::Alignment alignment)
你对该接口的理解存在偏差,它的作用并不是给当前布局内的所有控件设置对齐,而是给嵌套在当前布局内的子布局l设置整体对齐规则,控制的是子布局作为一个整体在当前布局可用空间中的位置,不会作用到子布局内部的控件上。
你测试时传入了mainLayout自身,而当前布局并没有将自身作为子布局添加,因此调用后返回值为False,设置未生效。
适用场景:存在多层嵌套布局结构时,需要调整某一个子布局整体在父布局中的对齐位置时使用。
3. setAlignment(Qt::Alignment alignment)
该重载是PyQt对Qt C原生接口的扩展封装,Qt C原生库中没有该重载,对应的说明可在PyQt官方的QLayout接口文档中查询。
它的作用是设置当前布局整体在其父控件可用空间中的对齐规则。你测试时没有效果是因为QLayout默认会自动拉伸占满父控件的全部可用空间,对齐规则只有在你给布局设置了固定宽高、布局不会自动撑满父控件时才会生效。
适用场景:当你需要固定布局大小,且要调整整个布局在父控件中的展示位置时使用。
内容的提问来源于stack exchange,提问作者mak
相关产品推荐
相关产品推荐

