Qt 6: 1-5 布局管理

作用

  • 定位子部件
  • 感知窗口大小(默认和最小)
  • 窗口大小变化时自动处理子部件

常用属性

属性设置函数说明
layoutSpacingsetSpacing()子部件距离
layoutStretchsetStretch()伸缩因子
layoutLeftMarginsetContentsMargins()距左边界距离
layoutTopMarginsetContentsMargins()距上边界距离
layoutRightMarginsetContentsMargins()距右边界距离
layoutButtomMarginsetContentsMargins()距下边界距离

setContentsMargins(左, 上, 右, 下)

常用布局管理器

基本布局管理器

基本布局管理器分为水平布局和垂直布局

水平布局管理器

头文件:<QHBoxLayout>
效果:让子部件从左到右排列
使用方法:

  1. 在设计界面点击上方的Lay Out Horizontally或摁快捷键Ctrl + H
    在这里插入图片描述

  2. 使用代码

QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(ui->fontCombox) //添加组件
layout->setSpacing(50) //部件间隔
layout->setContentsMargins(0, 0, 50, 100) // 离左、上、右、下的距离

setLayout(layout) //设置布局

注:设置布局代码放在setupUi()后

垂直布局管理器

头文件:<QVBoxLayout>
效果:让子部件从上到下排列
使用方法:与水平布局类似

栅格布局管理器

头文件:<QGridLayout>
效果:计算布局空间,将布局合理分为一块块类似经纬切分的小格,因此又称网格布局
使用方法:

  1. 在设计界面点击上方的Lay Out Horizontally或摁快捷键Ctrl + G
  2. 使用代码
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(ui->fontComboBox, 0, 1, 2, 3);
	// 参数分别为子部件,第1行2列开始,占据2行3列
	// 只有一个部件默认居中
    setLayout(layout);

窗体布局管理器

头文件:<QFormLayout>
效果:分成两列,管理表单的输入部件和相关的标签,左边标签,右边输入部件,又叫表单布局
使用方法:

  1. 在设计界面点击左上方的Layouts中拖动Form Layout
    在这里插入图片描述
  2. 使用代码
    QLineEdit *le = new QLineEdit();
    QFormLayout *layout = new QFormLayout();
    layout->addRow("标签(&N)", le);

    setLayout(layout);

效果:在这里插入图片描述

实际中是几个布局嵌套使用

部件大小

QSizePolicy

  • 作用:保存部件的默认布局行为,有水平和垂直
  • 大小策略取值见下表
  • 方法
    • sizeHint(),获取sizeHint(大小提示),即窗口默认大小
    • minimumSizeHint(),获取minimumsizeHint(最小大小提示),即最小窗口
  • 伸缩因子,窗口伸缩时组件相对伸缩倍数
QSizePolicy::描述
Fixed只使用sizeHint()提供的值,无法伸缩
MinimumsizeHint()提供的值为最小值,可拉伸
MaximumsizeHint()提供的值为最大值,可压缩
PreferredsizeHint()提供的值为最佳大小,可拉伸
ExpandingsizeHint()提供的值为合适大小,可拉伸,倾向拉伸
MinimumExpandingsizeHint()提供的值为最小值,可拉伸,倾向拉伸
IgnoredsizeHint()提供的值被忽略,尽可能拉伸获取空间

布局管理器属性

layoutFieldGrowthPolicy

  • 作用:指定部件大小的变化方式
    • AllNonFixedFieldsGrow:都拉伸(默认)
    • FieldsStayAtSizeHint:使用sizeHint()提供的大小
    • ExpandingFieldsGrow:大小策略为Expanding的部件被拉伸

layoutRowWrapPolicy

  • 作用:是否换行
  • 值:
    • DontWrapRows:不换行(默认)
    • WrapLongRows:较长的换行
    • WrapAllRows:都换行,所有输入部件都会放置在相应的标签下面

layoutLabelAlignment

  • 作用:对齐方式,有水平和垂直
  • 值(水平方向):
    • AlignLeft:左对齐
    • AlignRight:右对齐
    • AlignHCenter:水平居中对齐
    • AlignJustify:两端对齐
  • 值(垂直方向):
    • AlignTop:向上对齐
    • AlignBottom:向下对齐
    • AlignVCenter:垂直居中对齐

layoutSizeConstraint

  • 作用:约束顶级窗口大小
  • 常量(类中前缀为QLayout::)
    • SetDefaultConstraint:设为minimumSize()的值,除非已有最小大小
    • SetFixedSize:设为sizeHint()的值,无法改变大小
    • SetMinimumSize:设为minimumSize()的值,无法再缩小
    • SetMaximumSize:设为maximumSize()的值,无法再放大
    • SetMinAndMaxSize:最小设为minimumSize()的值,最大设为maximumSize()的值
    • SetNoConstraint:部件不被约束

拆分器

  • 解决组件大小垂直方向不会变换问题
  • 分为水平和垂直

伙伴关系

  • 将标签与交互组件联系在一起
  • 摁下标签里设置的快捷键时触发组件
  • 使用方法:设计模式里点击设置伙伴
  • 快捷键设置:&开头后跟的第一个字母。如&Button,即“alt + B”,Button(&L),即"alt + L",&不显示
  • 在这里插入图片描述

Tab键顺序

  • 作用:按tab键焦点移动顺序
  • 使用方法:设计模式里点击设置伙伴
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值