Qt布局管理

  • Qt主要提供了QLayout及其子类来作为布局管理器,它们可以实现常用的布局管理功能。
    在这里插入图片描述

1. 布局管理系统

  • 所有QWidget的子类的是实例都可以使用布局管理器管理位于它们之中的子部件,QWidget::setLayou() 函数可以在一个部件上应用布局管理器。一旦一个部件上设置了布局管理器,它将会完成一下几个任务:
    • 定位子部件
    • 感知窗口默认大小
    • 感知窗口最小大小
    • 窗口大小变化时进行处理。
    • 当内容改变时自动更新:字体大小、文本或子部件的其他内容随之改变;隐藏或显示子部件;移除一个子部件

1.1 布局管理器

1.1.1 基本布局管理器(QBoxLayout)

  • QBoxLayout可以使子部件在水平方向或者垂直方向排成一列,它将所有的空间分成一行盒子,然后将每个部件放入一个盒子中。
  • 它有两个子类:QHBoxLayout水平布局管理器 和 QVBoxLayout 垂直布局管理器。
  • 布局管理器常用属性:
    在这里插入图片描述
    在这里插入图片描述
  • 代码练习
    在这里插入图片描述
#include <QHBoxLayout>
#include <QVBoxLayout>
    QVBoxLayout * layout = new QVBoxLayout;//新建水平布局管理器
    layout->addWidget(ui->fontComboBox);//向布局管理器中添加部件
    layout->addWidget(ui->textEdit);
    layout->setSpacing(10);//设置部件之间的间隔
    layout->setContentsMargins(10,10,10,10);//设置布局管理器到边界的距离 左右上下
    setLayout(layout);

1.1.2 栅格布局管理器(QGridLayout)

  • QGridLayout 类使部件在网格中进行布局,它将所有空间分隔成一些行和列,行和列的交叉处形成了单元格,然后将部件放入一个确定的单元格中。
    在这里插入图片描述
#include <QGridLayout>
    //网格布局
    QGridLayout * layout=new QGridLayout;
    //添加部件,从0行0列开始,占据1行2列
    layout->addWidget(ui->fontComboBox,0,0,1,2);
    //添加部件,从0行2列开始,占据1行1列
    layout->addWidget(ui->pushButton,0,2,1,1);
    //添加部件,从1行0列开始,占据1行3列
    layout->addWidget(ui->textEdit,1,0,1,3);
    setLayout(layout);

1.1.3 窗体布局管理器(QFormLayout)

  • 添加一个Form Layout,双击弹出对话框:运行程序后,Alt+N光标会定位到姓名编辑框。
    在这里插入图片描述
    在这里插入图片描述

1.1.4 综合使用布局管理器

  • 添加了一个Vertical Spacer 垂直分隔符,占位使用,运行时不显示。
    在这里插入图片描述

1.2 设置部件大小

1.2.1 大小提示和最小大小提示

  • 大小提示 (sizeHint) 保存了部件的建议大小
  • 最小大小提示 (minimumSizeHint) 保存了部件的一个建议的最小大小提示。
  • sizeHint()minimumSizeHint() 可以获取对应的值。
  • 如果使用setMinimumSize() 函数设置了部件的最小大小,那么最小大小提示将会被忽略。

1.2.2 大小策略

  • sizePolicy 属性保存了部件的默认布局行为,在水平和垂直两个方向分别起作用,控制着部件在布局管理器中的大小变化行为。
  • sizePolicy 属性的所有值:
    在这里插入图片描述
  • 大小策略与sizeHint() 的值息息相关。
  • sizeType 改为fixed 后,垂直分隔符才显示出它真正的高度 100 (sizeHint的高度)
    在这里插入图片描述
    在这里插入图片描述

1.2.3 伸缩因子

  • stretch factor 是用来设置部件间的比例的
    在这里插入图片描述
    在这里插入图片描述
  • 修改了layoutFieldGrowthPolicy属性,选择ExpandingFieldGrow选项,会发现,性别和年龄这两个输入框没有那么宽了,更美观。
    在这里插入图片描述
    在这里插入图片描述

1.2.4 窗体布局管理器相关属性说明

在这里插入图片描述

1.2.5 QLayout类的大小约束属性的取值

在这里插入图片描述

1.3 可扩展窗口

  • 一个窗口可能有很多选项是扩充的,只有在必要的时候才显示出来,这是就可以是用一个按钮来隐藏或者显示多余的内容,这就是可扩展窗口。
  • 当子部件隐藏时,布局管理器自动缩小,当子部件重新显示时,布局管理器再次放大。
    在这里插入图片描述
    在这里插入图片描述
  • 需要勾选pushButtoncheckable
void MyWidget::on_pushButton_toggled(bool checked)
{
    ui->textEdit->setVisible(checked);
    if(checked)
        ui->pushButton->setText(tr("隐藏可扩展窗口"));
    else
        ui->pushButton->setText(tr("显示可扩展窗口"));
}

1.4 分裂器(QSplitter)

  • 分裂器(QSplitter)提供了一个分裂器部件,可以完成布局管理的功能。
  • 包含在它里面的部件,默认是随着分裂器的大小变化而变化的。
    在这里插入图片描述

2. 设置伙伴(buddy)

  • 设置伙伴关系,F3 是退出编辑
  • 前面的label 分别命名: &Button:, C&hcekBox:, 行编辑器(&L):, 数字选择框(&N):
    在这里插入图片描述
  • 设置好伙伴关系后,就可以用快捷键来操作界面了。Alt+B ,Alt+h, Alt+L, Alt+N
    在这里插入图片描述

3. 设置Tab键顺序

  • 使用Tab键从一个部件移动到下一个部件。
    在这里插入图片描述

4. Qt Creator中的定位器

  • 在这里,快捷键是Ctrl + K,搜索帮助文档很方便。
  • 比如想搜索QLabel相关 可以输入 ? QLabel
    在这里插入图片描述

5. 资源下载

https://download.csdn.net/download/weixin_38566632/85100380

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值