Qt提供了方便快捷的界面布局方式,包括水平布局,垂直布局,网格布局,表单布局,以及分组布局的方式,避免了手动排布的繁琐,能够覆盖大部分设计需要;以下简单介绍五种布局的实现方式:

一、水平布局

        无论哪种布局,首先都需要对其头文件进行声明,水平布局需要声明头文件<QHBoxLayout>,然后需要创建水平布局对象,如cmdLayout,随后使用addWidget将需要进行水平布局的两个控件关联。如下图:

        实现排布效果如下():

二、垂直布局

        与水平布局类似,需要声明的头文件为<QVBoxLayout>,创建对象与关联方式与水平布局相似;创建垂直布局对象后,关联需要布局的控件;此外该函数可以将此前创建的对象再次进行布局,即将此前已经进行水平布局的对象如cmdLayout作为此次垂直布局的对象参与布局;

        实现的效果如下图:

        可见,如确定,取消,浏览三个按钮按照水平布局后,参与了提示行,输入行的垂直布局;

三、网格布局

        网格布局就比如计算器的按键等,都属于网格布局。网格布局需要引入头文件<QGridLayout>;addWidget的参数中数字代表控件的坐标,且从0开始编号,如,第一行第一列为(0,0),第二行第三列为(1,2);

四、表单布局

        通过简单的垂直布局,或者水平布局也是可以实现的,但是代码较为复杂,且设置随窗口大小缩放需要设置每一列的拉伸洗漱,所以可以通过表单布局直接实现。声明的头文件为<QFormLayout>

        QFormLayout 底层是用 QGridLayout 网格布局实现的,但需要注意的是,QFormLayout 只包含 2 列(不限制行数),且第一列放置标签,第二列放置输入框。

五、分组布局

        我们经常会遇到点击某个按钮后,界面会随点击的按钮不同而产生相应的变化,例如使用excel进行设置时,选择的选项卡不同,对应的显示内容就不同,例如选择“自定义功能区”“加载项”等标签时,右边黄色圆圈部分的内容会产生改变;此时可以借助分组布局来实现;

        分组布局需要声明的头文件为<QStackedLayout>,声明后将三个控件加入到分组布局中,如下图:

        但是分组布局自身并不能实现界面内容切换的功能,需要借助QListWidget来实现。如下图,创建一个列表后,添加三个选项按钮,文本框,和输入框;

        随后将QListWidget和QStackedLayout水平布局,如下图:

        既可以实现理想的功能;

        除此之外,在程序中可以通过addStretch()的方式在布局中添加空白列,使之更加美观;当然使用五种布局方式灵活组合,即可以实现多种设计需要;

        最后,当进行完所有控件排布后,记得对该窗口进行头文件声明<Qwidget>,并通过如下三行创建窗口对象:

        

        知识点来自于:

        B站up:bestswinger;

        C语言中文网:Qt布局管理详解(5种布局控件)

                                      

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐