Qt - 布局管理器

本文介绍了Qt中的布局管理器,包括QBoxLayout的水平和垂直布局,QGridLayout的网格布局,QFormLayout的表单布局,以及QStackedLayout的堆栈布局。这些布局管理器自动调整控件位置和大小,简化GUI开发。通过示例代码展示了各种布局的使用方法,帮助开发者高效构建用户界面。
摘要由CSDN通过智能技术生成

实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。作为一款成熟的 GUI 框架,Qt 提供了很多摆放控件的辅助工具(又称布局管理器或者布局控件),它们可以完成两件事:

  • 自动调整控件的位置,包括控件之间的间距、对齐等;
  • 当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观。


总之借助布局管理器,我们无需再逐个调整控件的位置和大小,可以将更多的精力放在软件功能的实现上。

Qt 共提供了 5 种布局管理器,每种布局管理器对应一个类,分别是 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和 QStackedLayout(分组布局),它们的继承关系如下图所示:

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓ 

1. 盒子布局(QBoxLayout)

QBoxLayout:可以在水平方向或垂直方向上排列控件,分别派生了QHBoxLayout、QVBoxLayout子类。

水平/垂直布局跟盒子布局除了构造时的方向(LeftToRight、TopToBottom)不同外,其它均相同。

QBoxLayout* boxlayout = new QBoxLayout(QBoxLayout::Direction::LeftToRight);//盒子布局
QHBoxLayout* hlayout = new  QHBoxLayout();//水平布局
QVBoxLayout* vlayout = new  QVBoxLayout();//垂直布局

公有函数

函数

描述

void addLayout(QLayout* layout,int stretch = 0)

将layout添加到框的末端,使用连续拉伸因子拉伸。

void addSpacerItem(QSpacerItem * spacerItem)

将spaceeritem添加到该盒子布局的末尾,通常不使用这个函数,请使用addSpacing(int size)

void addSpacerItem(QSpacerItem * spacerItem)

添加一个大小为size的不可伸缩空间(QSpacerItem)到这个框布局的末尾

void addStretch(int stretch = 0)

添加一个可伸缩空间(一个QSpacerItem),最小尺寸为零,拉伸因子stretch到这个框布局的末尾。

void addStretch(int stretch = 0)

限制盒子的垂直尺寸最小为size

void addWidget(QWidget* widget,int stretch = 0,Qt::Alignment alignment = 0)

将小部件添加到此框布局的末尾,并使用拉伸因子拉伸和对齐对齐。

void setDirection(QBoxLayout::Direction direction)

设置此布局的方向为direction。

void setSpacing(int spacing)

设置小部件之间的间距

void setStretch(int index,int stretch)

给index位置的控件设置拉伸因子stretch

bool setStretchFactor(QWidget* widget,int stretch) bool setStretchFactor(QWidget* widget,int stretch)

设置小部件的拉伸因子,如果在布局中发现小部件(不包括子布局),则返回true; 否则返回false。

void QLayout::setMargin(int margin)

设置布局管理器中所有控件的外边距,上、下、左、右外边距的大小都为 margin。默认情况下,所有方向的外边距为 11 px。

void QLayout::setContentsMargins(int left, int top, int right, int bottom)

设置布局管理器中所有控件的外边距,和 setMargin() 的区别是,此方法可以自定义上、下、左、右外边距的值。

下面来讲解QBoxLayout、QHBoxLayout、QVBoxLayout的使用。

  • 盒子布局(QBoxLayout)
//创建需要布局的小部件
QLabel* nameLabel = new QLabel("name");
QLineEdit* nameEdit = new QLineEdit;

//创建布局
QBoxLayout* boxlayout = new QBoxLayout(QBoxLayout::LeftToRight);   //从左到右
//QBoxLayout* boxlayout = new QBoxLayout(QBoxLayout::RightToLeft); //从右到左
//QBoxLayout* boxlayout = new QBoxLayout(QBoxLayout::TopToBottom); //从上到下
//QBoxLayout* boxlayout = new QBoxLayout(QBoxLayout::BottomToTop); //从下到上

//把小部件添加到布局
boxlayout->addWidget(nameLabel);
boxlayout->addWidget(nameEdit);

//给当前窗口设置布局
this->setLayout(boxlayout);

1.1 水平布局(QHBoxLayout)

QHBoxLayout:水平布局,在水平方向上排列控件,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值