QLayouthtml
Header: | #include <QLayout> |
qmake: | QT += widgets |
Inherits: | QObject and QLayoutItem |
Inherited By: | QBoxLayout, QFormLayout, QGridLayout, and QStackedLayout |
涉及到的控件主要有:QSplitter窗口分割器、QSpacerItem间距控制(相似于弹簧效果)、QHBoxLayout(1行n列)和QVBoxLayout(n行1列)行列布局、QFormLayout表单布局(n行2列)、QGridLayout栅格布局(n行n列)app
addWidget(QWidget *w)、removeWidget(QWidget *widget)? QWidget操做ide
setSpacing(int spacing) setHorizontalSpacing(int spacing) setVerticalSpacing(int spacing)设置间距函数
在使用Designer时,就是Spacers里面的行列spacer,弹簧样式的图标,此控件添加之后不会在界面显示,主要是占位使用。任何layout默认是先符合控件的sizePolicy的要求下进行控件大小、间距调整。布局
但若是想要实现相似于程序标题栏的效果,左侧图标、程序名,右侧最大化、最小化关闭按钮,中间就须要一个占位的空白控件,这时候须要使用QSpacerItem。post
在Designer时,直接拖拽到须要占位的地方(注意,两个空间之间或者布局之间都可,但其所在空间必须是QLayout而不是QWidget)spa
代码使用:使用addSpacerItem(QSpacerItem *spacerItem)、insertSpacerItem(int index, QSpacerItem *spacerItem)、removeItem(QLayoutItem *item)rest
addSpacing(int size)这类方法是设置间距而不是插入spaceritemexcel
spacerItem父类是QLayoutItem,直接removeQLayoutItem 便可删除,同理能够使用removeItem(QLayoutItem *item)、code
其父类为QBoxLayout,能够配合QSpacerItem使用
n行两列表单,提供了一套insertRow、removeRow、addRow的方法,此类默认第一列为QLabel,支持第一列只提供字符串而不提供QLabel对象
setRowWrapPolicy(RowWrapPolicy policy)
Constant | Value | Description |
---|---|---|
QFormLayout::DontWrapRows |
0 |
一直在一行Fields are always laid out next to their label. This is the default policy for all styles except Qt Extended styles. |
QFormLayout::WrapLongRows |
1 |
自适应,若是空间不够则两行Labels are given enough horizontal space to fit the widest label, and the rest of the space is given to the fields. If the minimum size of a field pair is wider than the available space, the field is wrapped to the next line. This is the default policy for Qt Extended styles. |
QFormLayout::WrapAllRows |
2 |
一直两行Fields are always laid out below their label. |
不使用addrow一类的整行添加,也能够逐个添加,使用此函数须要设置ItemRole
Constant | Value | Description |
---|---|---|
QFormLayout::LabelRole |
0 |
标签列A label widget. |
QFormLayout::FieldRole |
1 |
输入框列A field widget. |
QFormLayout::SpanningRole |
2 |
单控件占用整行A widget that spans label and field columns. |
适用于复杂布局
注意row,column为起点位置,rowSpan,columnSpan表示占用的行数,相似于excel中的合并单元格效果
设置伸缩空间和间距
堆布局,这个布局实现widget分页显示,Qt提供了他的一个控件QStackedWidget
实现窗口分割效果,且能够动态调整比例
setOpaqueResize(bool opaque = true) 在调整比例时是否动态更新
setChildrenCollapsible(bool) 是否容许子窗口为0尺寸
addWidget(QWidget *widget)、insertWidget(int index, QWidget *widget) 添加窗口
注意是窗口分割 不是布局分割,因此不能支持布局的添加