Qt——布局

布局

        Qt的界面设计使用了布局功能。布局就是界面上组件的排列方式,使用布局可以使组件有规律地分布,并且随着窗体大小变化自动地调整大小和相对位置。Qt布局功能的实现基类为QLayout,为满足不同场景,又派生出QBoxLayout(QHBoxLayout和QVBoxLayout)、QFormLayout、QGridLayout、QStackedLayout。

为什么要存在布局

1、布局之后窗口的排列是有序的;

2、布局之后窗口的大小发生变化,控件的大小也会对应变化;

3、如果不对控件布局, 窗口显示出来之后有些控件的看不到的;

4、布局是可以嵌套使用。

常用的布局方式

Qt——布局_第1张图片

1、水平布局(Horizontal Layout)

-> 所有的控件水平排列 -> 一行多列

头文件:

#include

水平布局:基本使用方式就是将整个窗口中的控件以左右的方式进行摆放。

 如上图,将两个按钮和四个按钮设置成水平布局。图2实现了水平布局嵌套。

2、垂直布局 (Vertical Layout)

-> 所有控件垂直排列 -> 多行一列

头文件:

#include

垂直布局:与水平布局一样,只不过是将窗口内的控件以上下方式进行摆放。‘

Qt——布局_第2张图片

  如上图,将两个按钮和四个按钮设置成垂直平布局。图2实现了垂直布局嵌套。

3、网格(栅格)布局 (Grid Layout)

-> 多行多列

头文件:

#include

 栅格布局:与垂直布局有不同之处,它在布局的时候会根据当前控件摆放的位置进行布局,并绘制出行和列的分割线来。

Qt——布局_第3张图片

Qt——布局_第4张图片

Qt——布局_第5张图片

 如上所述,如果两个有水平差距的按钮设置成栅格便变成上图,在栅格中可以添加控件即可。

4、表单布局 (Form Layout)  

   -> 多行两列(常用于表单显示)

头文件:

#include

 表单布局,顾明思议是实现表单模式的布局。表单是用户进行交互的一种模式,主要有两列组成。第一列用于显示信息,给与用户提示,一般叫做label域。第二列,用于用户选择输入,一般叫做field域。表单就是很多由这两列内容组成的多行的布局。

比较常用的,用户登录界面就是采用的表单布局。

Qt——布局_第6张图片

5、堆栈布局  (Stacked Layout)

-> 堆栈布局 (常用于标签页签显示)

头文件:

#include

堆栈布局:是将一堆widget控件放置在一起,只有一个控件可见,根据用户需求进行切换不同控件或页面。


        备注:布局是可以嵌套的,嵌套后的布局可以实现更加复杂的界面需求,这样就可以满足不同用户的需求,这也是Qt独步客户端领域、并广受开发人员喜爱的一个重要原因之一。


常用接口 


//setMargin可以设置左、上、右、下的外边距, 设置之后,他们的外边距是相同的
setMargin(int);        

//与setMargin功能相同,但是可以将左、上、右、下的外边距设置为不同的值
setContentsMargins(int left, int top, int right, int bottom);
setContentsMargins(const QMargins &margins);                 //设置外边距

//添加控件默认的,我们添加控件至水平布局中,默认都是垂直方向居中对齐的。
addwidget(QWidget *, int stretch = 0, Qt::Alignment alignment =0)

//设置布局方向
setDirection(QBoxLayout::RightToLeft);           

//设置控件、布局的拉伸系数
setStretchFactor(QWidget *w, int stretch);       
setStretchFactor(QLayout *1, int stretch); 

//设置layout中各部件的相邻距离,如果不设置,这个距离默认是10。需要注意的是layout布局的控件之间是有默认距离为10(即setSpacing默认设置为10)通过setSpacing(0)函数设置为0可使控件紧贴。
setSpacing(int);

//添加一个固定size 大小的间距,在setSpacing(int)的基础之上再插入间距。即是layout的控件间的间距为addSpacing值+setSpacing值。这个距离可以是负值,表示后一个部件会覆盖在前一个部件上面。
addSpacing(int);

//添加一个可伸缩空间,是在layout的控件之间插入stretch个控件的间距。
addStretch(int stretch = 0);

Qt——布局_第7张图片

你可能感兴趣的:(Qt,qt,css)