「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战」。
环境:Qt Creator5.5.1
前言:
其实Qt中界面开发的一个优势就是QLayout(布局)和QSpacer(弹簧)的结合。通过在Qt Designer中将需要的控件拖到窗口中,在窗口中添加QLayout和QSpacer以确定控件的位置,将所有可视化的控件全部在窗口中布局好,这样一来,代码只需实现功能就可以了,界面布局的代码就会少很多,而且很方便,可以加快页面的开发速度。
QLayout类关系图:
布局管理系统:
Qt的布局管理系统提供了强大的机制来自动排列窗口中的所有部件,确保它们有效地使用空间。
所有QWidget的子类的实例(对象)都可以使用布局管理器管理位于它们之中的子部件,可以通过QWidget::setLayout()函数在一个部件上应用布局管理器,也可以在Qt Designer中右键选中部件,选择布局来添加。QWidget在添加布局时,要先确保QWidget中有子部件的存在,否则这时布局管理是不可用的状态。
一旦一个部件设置了布局管理器,那它会完成下面这些事情:
-
定位子部件;
-
感知窗口默认大小;
-
感知窗口最小大小;
-
窗口大小变化时进行处理;
-
当内容改变时自动更新:
——字体大小、文本或子部件的其他内容随之改变;
——隐藏或显示子部件;
——移除一个子部件。
布局管理器:
一般需要用到的布局管理器有:
- QBoxLayout(基本布局管理器;又分为:QHBoxLayout(水平布局管理器)和QVBoxLayout(垂直布局管理器))
- QGridLayout(栅格布局管理器)
- QFormLayout(窗体布局管理器)
- QStackedLayout(栈布局管理器)
布局管理器常用属性:
| 属性 | 说明 |
|---|---|
| layoutName | 现在所使用的布局管理器的名称 |
| layoutLeftMargin | 设置布局管理器到界面左边界的距离 |
| layoutTopMargin | 设置布局管理器到界面上边界的距离 |
| layoutRightMargin | 设置布局管理器到界面右边界的距离 |
| layoutBottomMargin | 设置布局管理器到界面下边界的距离 |
| layoutSpacing | 布局管理器中各个子部件间的距离 |
| layoutStretch | 伸缩因子 |
| layoutSizeConstraint | 设置大小约束条件 |
基本布局管理器(QBoxLayout):
基本布局管理器QBoxLayout类可以使子部件在水平方向或者垂直方向排成一列。
栅格布局管理器(QGridLayout):
栅格布局管理器QGridLayout类使部件在网格中进行布局,它将所有的控件分隔成网格,将部件放入某一个单元格中。
窗体布局管理器(QFormLayout):
用来管理表单的输入部件以及与它们相关的标签。窗体布局管理器将它的子部件分为两列,左边是一些标签,右边是一些输入部件。
一般主要应用在登录时输入账号、密码;输入个人信息如:姓名:+输入框。
注: 当部件加入到一个布局管理其中,然后将这个布局管理器再放到一个窗口部件上时,这个布局以及它包含的所有部件都会重新定义自己的父对象(parent)为这个窗口部件,所以在创建布局管理器和其中的部件时不用指定父部件。
在页面上不可能所有控件都排的满满当当,这时就需要用到QSpacer,用来在部件之间产生间隔。QSpacer分为水平分隔符和垂直分隔符。
使用布局的效果图:
页面中红色框为布局(QLayout),蓝紫色长条为弹簧(QSpacer),还有其他的控件。