Qt学习笔记——窗口的布局

本文介绍了QT中的布局管理概念,包括如何使用QLayout及其子类如QHBoxLayout和QVBoxLayout进行控件布局。文中还详细解释了SizePolicy的作用及不同策略的应用场景,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局:layout,就是把各个控件放在合适的位置,占据适当大小的空间。
 在QT中,使用布局器QLayout进行布局
 (1)它为我们自动计算各个控件的大小和位置
 (2)当父窗口调整时,它根据既定策略Policy来调整各个子窗口的大小和位置。
 两个常用的QLayout子类: QHBoxLayout:横向布局、 QVBoxLayout:纵向布局
 纵向布局 QVBoxLayout:每个Box的宽度信息被忽略,只关心他的高度。
 例:
private:
QLineEdit * m_lineEdit;
QPlainTextEdit * m_textEdit;
在窗口构造函数中写:
//创建控件对象
m_lineEdit = new QLineEdit(this);
m_textEdit = new QPlainTextEdit(this);
//创建布局器 
QVBoxLayout * layout = new QVBoxLayout(this);
layout->addWidget(m_lineEdit);
layout->addWidget(m_textEdit);
//使用布局器
this->setLayout(layout);
 SizePolicy:用于描述一个Widget被resizing(调整大小)的时候,采用的策略
 在SizePolicy类中定义了七种策略
Fixed:使用sizeHint,不能更大、不能更小
Minimum:不得小于sizeHint,可以更大,但不需要更大
Maximum:不得大于sizeHint,可以更小
Preferred:优先使用sizeHint,可大可小
Expanding:使用sizeHint,越大越好
MinimumExpanding:不得小于sizeHint,越大越好
lgnored:忽略sizeHint,越大越好
 
 得到sizeHint和sizePolicy
 由于采用纵向布局,我们只关心其高度和纵向的Policy
QSize sizeHint = m_lineEdit->sizeHint();
QSizePolicy pl = m_lineEdit->sizePolicy();
QSizePolicy::Policy vertical = pl.verticalPolicy();
 改QLineEdit的Policy,
m_lineEdit->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
 QWidget类有一个函数 virtual QSize sizeHind() const;
 每一种Widget窗口类都需要重写这个函数。  作用:向布局器声明自己需要空间大小。
 注:sizeHint和sizePolicy,都是提供给布局器的信息,布局器QLayout会根据这两个信息来决定这个窗口控件的实际尺寸。
 布局参数
 size hint:推荐大小
 size policy:策略
 stretch factor:拉伸因子
 在同一个方向上,两个控件都有拉伸的需求(Expanding),那么布局器就需要合理分配他的需求
 比如:A,B控件都是Expanding,stretch为1,1那么多余空间分配比例将是1:1
 maximum size / minimum size:上限与下限
首先,QLayout根据控件的size hint,size policy,stretch factor来计算出大小
最后,保证其大小在[minimum,maximum]之间(多了一重限制)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值