这一节主要是关于C++Qt学习的几个UI控件的学习,分别为:margin&padding(外边距&内边距)、QHBoxLayout(水平布局)、QVBoxLayout(垂直布局)、QGridLayout(网格布局)、QSplitter(分裂器)、QSpacer(隔离弹簧)
目录
1.1、margin:一个控件的边框到另一个控件的边框的距离,属于容器外部距离。
1.2、padding:自身边框到自身内部另一个容器边框直接按的距离,属于容器内距离
5.2 childrenCollapsible: 为true时,用户可以将子部件的大小调整为0 .
1、margin&padding(外边距&内边距)
A、新建项目,拖入一个Push Button
B、将Push Button的大小设置为800×480,与QWidget的大小一致
1.1、margin:一个控件的边框到另一个控件的边框的距离,属于容器外部距离。
A、选中按键,右键改变样式表,设置margin的值。
QPushButton{
margin:50px;
}
发现改变的是QPushBUtton与QWidget的距离。
与以下代码表达的意思一致
QPushButton{
margin-left:50px;
margin-right:50px;
margin-top:50px;
margin-bottom:50px;
}
B、选中按键,右键改变样式表,设置margin的值。
QPushButton{
margin-left:50px;
}
发现改变的是按键与QWidget左边的距离,同理其他方向
从而验证了:margin其实就是控件与空间之间的距离,外距离
1.2、padding:自身边框到自身内部另一个容器边框直接按的距离,属于容器内距离
A、border(描边距离),设置border的样式
QPushButton{
margin: 50px;
background-color: #CDCDB4;
border-width: 50px;
border-color: #458B00;
border-style: solid;
}
B、将PushButton文字大小改成100
C、padding:也就是按钮文字到按钮边框之间的距离,可以发现文字往下移了50 个像素
D、设置成100px
2、QHBoxLayout(水平布局)
关于水平布局,主要有三个参数需要学习
spacing:间隔距离;
stretch:拉伸因子(系数)
sizePolicy:大小策略
A、打开UI,拖入三个控件
B、按住Ctrl,选中这三个控件,再点击水平布局
2.1、spacing:间隔距离
A、这里的LayoutSpacing就是间隔距离,改成20看一下效果
其实也就是控件之间的距离加大了
2.2、stretch:拉伸因子(系数)
改成1:1:5。发现其实也就是控件的大小比例,发生变化
A、运行发现,拖动窗口,控件并不跟着窗口大小变化而变化
解决办法:找到widget.cpp文件。添加以下代码
this->setLayout(ui->horizontalLayout_2);
B、拖动窗口,发现拖到一定程度的时候,控件大小一样,不是Strech设定的值
解决:是因为有缺省值,那么拉伸因子就不起作用了。可以调节这几个Margin
2.3、sizePolicy:大小策略
找到帮助文档,查看这几个的具体含义
A、Ignored,主要看这个,意思就是说缺省值可以忽略
那么,在拖动的时候,可以发现,第一个控件可以被折叠不见
B、看一下expanding
3、QVBoxLayout(垂直布局)
与水平布局,一样,不讲了
4、GridLayout(网格布局)
A、在UI界面拖一个网格布局,并拖动控件
发现格子大小不一样
B、先拖动控件,再点击栅格布局
4.1、行最小高度
4.2、行最小宽度
4.3、改变控件大小及位置
如果只是在UI界面里面拖动控件来改变大小,发现改变不了
A、最小大小
B、将控件放在中间,右键选中,选中居中
C、运行发现,拖动窗口,控件并不跟着窗口大小变化而变化
解决
5、QSplitter(分裂器)
关于分裂器,主要学习下面这几个参数
orientation:设置方向,可设置水平或垂直方向。
opaqueResize: 为false时,在拖动的时候会显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割线条。默认为true,实时更新子控件大小。
childrenCollapsible: 为true时,用户可以将子部件的大小调整为0
A、打开UI,拖入两个widget,并且改变样式表
B、选中两个widget,点击使用分裂器水平布局或者垂直布局(主要看水平,垂直性质一样的)
C、发现不见了
将他托大就好了
D、发现可以拖动
E、但是会托不见了
F、将最小宽度改变一下
但是还是可以托不见,看5.2
5.1、opaqueResize
找到opaqueResizesize为false时,在拖动的时候会显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割线条。默认为true,实时更新子控件大小。
5.2 childrenCollapsible: 为true时,用户可以将子部件的大小调整为0 .
设置成False,就拖不动了
A、handlewidth,也就是中间的线宽
设置颜色
A、运行发现,拖动窗口,控件并不跟着窗口大小变化而变化
找一个水平布局,托进去
6、QSpacer(隔离弹簧)
关于隔离弹簧,主要学习下面这几个参数
orientation: 设置方向,可设置水平或垂直方向
sizeType: 大小类型,可以设置好几种,如固定大小,可扩大的等
sizeHint: 缺省大小,也就是默认大小
A、打开UI,在界面拖入水平布局,在水平布局里面拖入控件,并拖入隔离弹簧
B、设置布局
1、sizetype
A、设置成Fixed,固定大小
B、ignored,忽略缺省值大小
发现没有用,可以直接使用Fixed将宽度设为0,或者直接删掉弹簧即可
垂直弹簧和水平一样,不讲