QT通过布局管理器解决一些位置的问题,因为在QT中在设置位置的时候都是绝对位置的设置,比如说setgeometry、move,或者ui界面的拖动
1、QVBoxLayout
属性 | 说明 |
---|---|
layoutLeftMargin | 左侧边框 |
layoutRightMargin | 右侧边框 |
layoutTopMargin | 上方边距 |
layoutBottomMargin | 下方边框 |
layoutSpacing | 相邻元素之间的间距 |
2、QHBoxLayout
属性 | 说明 |
---|---|
layoutLeftMargin | 左侧边框 |
layoutRightMargin | 右侧边框 |
layoutTopMargin | 上方边距 |
layoutBottomMargin | 下方边框 |
layoutSpacing | 相邻元素之间的间距 |
垂直布局和水平布局是可以相互嵌套的,通过它们的相互配合可是实现更好的效果
在实现完成后,我们拖动边框发现按钮的大小是可以通过窗口的变化来变化的,但是要是通过ui将两个垂直布局或者两个水平布局设置到一个layout里,那么就不会实现这样的效果,因为一个widget只能有一个layout
3、QGridLayout
属性 | 说明 |
---|---|
layoutLeftMargin | 左侧边框 |
layoutRightMargin | 右侧边框 |
layoutTopMargin | 上方边距 |
layoutBottomMargin | 下方边框 |
layoutHorizontalSpacing | 相邻水平方向元素间隔 |
layoutVerticalSpacing | 相邻垂直方向元素 |
layoutRowStretch | 行方向拉伸系数 |
layoutColumnStretch | 列方向拉伸系数 |
可以通过所写坐标设置控件的相对位置
4、QFormLayout
可以算作是QGridLayout的一种特殊情况,左侧为提示,右侧为输入框
addRow第一个参数显示提示,如果为NULL则不显示
5、Spacer
属性 | 说明 |
---|---|
width | 宽度 |
height | 高度 |
hData | 水平方向的SizePolicy选项 |
vData | 垂直方向的SizePolicy选项 |
选项有如下几种:
QSizePolicy::Ignored :忽略控件尺寸,不对布局产生影响
QSizePolicy::Minimum : 控件的最小尺寸固定,布局时不会小于该值
QSizePolicy::Maximum : 控件的最小尺寸固定,布局时不会大于该值
QSizePolicy::Preferred : 控件的理想尺寸固定,布局时往这个值靠近
QSizePolicy::Expanding :控件的尺寸可以根据空间调整,尽可能的多占据空间
QSizePolicy::Shrinking : 控件的尺寸可以根据空间调整,尽可能的少占据空间
今日分享就到这里了~