QT的五类布局

QHBoxLayout 水平布局

QVBoxLayout 垂直布局

QGridLayout 网格布局

QFormLayout 表单布局

QSplitter 分割条布局

表单布局和网格布局区别:

网格:随布局的变化而变化

表单布局:水平布局变化,垂直不变化

一.水平布局和垂直布局

常用函数

窗口大小:setGeometry(ax,ay,aw,ah)

创建分组框(QGroupBox)

创建文本编辑框(QTextEdit)

设置尺寸策略:让控件在布局中自动拉伸填充可用空间

(1)

addWidget()用来给布局添加控件的函数,同时可以控制行列这样的位置(可以选择添加)(比如:按钮、文本框、分组框等)

(2)QSizePolicy::Expanding:控件会尽可能占据布局分配的空间(横向+纵向都拉伸)

例如:

QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)

(3)

setSizePolicy() 核心作用是设置控件在布局中的拉伸 / 收缩规则(只对布局中的控件生效)

setStretch() 是 Qt 布局中控制控件在布局内占比分配

代码

二.网格布局

常用函数

QComboBox() :下拉选择框,利用父子机制管理内存

网格布局:QGridLayout()

grp_layout->addWidget(btn1, 0, 0, 1, 1); 控件对象,原始坐标(x,y),宽度数和列数大小

代码

三.表单布局

用在封装函数的宏(也可以写后面数字)

QFormLayout 只有 0、1、2 这三个角色值,没有其他枚举项;

它们专门用来控制表单布局中「标签、输入控件、跨列控件」的排版;

你在 addRow() 或 setWidget() 时,只能传这三个值之一(后者由于前者)

0 代表标签列(比如 "用户名:""密码:" 这类文本标签)

1 代表输入控件列(比如输入框、下拉框、按钮等交互控件)

2 代表跨列控件(一个控件占据标签 + 输入两列,常用于分组框、提示文本等)

QT的两种布局函数

addRow和setWidget(后者更好)

addRow() 是「快捷添加整行」,setWidget() 是「精准控制单元格」

语法:

setWidget(行号, 角色, 控件)

控件放在该行的哪一列 / 占多少列(只有 3 种取值:0/1/2),上面的0/1/2充当角色栏

addRow( 标签文本,控件 )

伙伴函数

setBuddy ( )建立伙伴关系

用法:user_label->setBuddy(user_edit);

代码

快速搭建标准表单(标签 + 输入框) 自定义表单布局(跨列、空行、动态修改)

选 addRow() 当:

搭建标准表单(标签 + 输入框 / 下拉框 / 按钮);

不需要手动控制行号,只想快速追加行;

开发效率优先,代码简洁为主

选 setWidget() 当:

需要动态修改表单(比如替换某一行的输入框为下拉框);

需要自定义行号(比如插入空行、覆盖已有行);

需要精准控制角色(比如某行只显示标签,不显示输入框)

常见坑点

setWidget() 的行号从 0 开始,且不能超出当前行数(否则会出现空行);

addRow() 自动追加行,多次调用会按顺序往后加,无法插入到指定行;

跨列控件(SpanningRole)用 addRow(单个控件) 更简洁,不用写 setWidget(行号, SpanningRole, 控件);

两者都可以和 setStretch() 配合,控制行 / 列的拉伸比例

常用函数

QLineEdit()创建单条文本输入框

四.分割条布局

QSplitter()分割条函数(可以进行缩放的)完成该界面:红色部分右水平分割,蓝色绿色在右边框中是垂直分割

常用函数

setTitle():标题栏(起名字的意思)

setOrientation():当中调用两个宏Qt::Horizontal ,Qt::Vertical(水平/竖直)

main_spliter->setChildrenCollapsible(false) 关闭移动的动态

代码

相关推荐
故事和你912 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
载数而行5202 小时前
QT的QString类
c++·qt·学习
zl_dfq3 小时前
Python学习2 之 【数据类型、运算及相关函数、math库】
学习
bu_shuo3 小时前
Visual C++2010学习版(全国计算机等级二级考试版)安装记录
c++·cpp·visual c++·计算机二级
2301_781143565 小时前
C语言学习笔记
笔记·学习
Titan20245 小时前
Linux环境变量个人笔记
linux·服务器·c++
记忆多6 小时前
c++名字空间 函数模版 左右值
开发语言·c++·算法
Alphapeople6 小时前
Isaac Sim学习
学习
蒸蒸yyyyzwd6 小时前
高并发40问学习笔记
笔记·学习