一、前言
采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLayout类继承自QBoxLayout
采用QHBoxLayout类,按照从左到右的顺序来添加控件
QHBoxLayout类中常用的方法如下
方法 | 描述 |
---|---|
addLayout(self,stretch=0) | 在窗口的右边添加布局,使用stretch(伸缩量)进行伸缩,伸缩量默认为0 |
addWidget(self,QWidget.stretch,Qt.Alignmeny alihnment) | 在布局中添加控件 |
stretch(伸缩量),只适用于QBoxLayout,控件和窗口会随着伸缩量的变大而增大 | |
alignment:指定的对齐方式 | |
addSpacing(self,int) | 设置各控件的上下间距,通过该方法可以增加额外的控件 |
对齐方式参数
参数 | 描述 |
---|---|
Qt.AlignLeft | 水平方向居左对齐 |
Qt.AlignRight水平方向具有对齐 | |
Qt.AlignCenter | 水平方向居中对齐 |
Qt.AlignJustify | 水平方向两端对齐 |
Qt.AlignTop | 垂直方向靠上对齐 |
Qt.AlignBottom | 垂直方向靠下对齐 |
Qt.AlignVCenter | 垂直方向居中对齐 |
二、
1.addSpacing(int size)在layout的控件之间插入间距,其插入的间距是在setSpacing(int)的基础上的,即是layout的控件间的间距为addSpacing值+setSpacing值。
需要注意的是layout布局的控件之间是有默认距离为10(即setSpacing默认设置为10)通过setSpacing(0)函数设置为0可使控件紧贴。
2.addStretch(int stretch = 0)是在layout的控件之间插入stretch个控件的间距。
3.addSpacerItem(QSpacerItem(int w, int h,QSizePolicy::Policy hData = QSizePolicy::Minimum,QSizePolicy::Policy vData = QSizePolicy::Minimum))
一般用在控件大小不等的时候。例如窗口的标题栏:部分控件的大小不变,空白区域允许拉长或缩短时。
需要注意的是当你设置了某些控件的大小时,再使用layout布局可能会有出乎意料的情况应该是两者之间存在了冲突。
三、
1.layout通过使用setcontentmargins来设置四周留白的间隔
函数原型:void QLayout::setContentsMargins ( int left, int top, int right, int bottom )
layout1->setContentsMargins(1,0,1,0);
2.layout可以使用setMargin()在控件内部的边距设置;
3.layout可以使用addStretch()在布局里面添加弹簧;
**4.**layout可以使用 setspacing设置控件之间的间隔;注:设置无效的可能原因有,总布局里添加控件的时候设置了比例,如图所示,去掉那个比例就可以了.在这里插入图片描述
5.setStretchFactor设置布局里某控件之间的比例;