Qt布局

常用的布局方法
1. 水平布局类 QHBoxLayout
2. 垂直布局类 QVBoxLayout
3. 网格布局类 QGridLayout

QHBoxLayout
对象横向排列开

QHBoxLayout

QVBoxLayout 对象纵向排列开
向上伸缩

addStretch

QWidget *widget = new QWidget();
QPushButton *button_all = new QPushButton(tr("总情况"));
QPushButton *button_buy = new QPushButton(tr("入库"));
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(button_all);
layout->addWidget(button_buy);
layout->addStretch(); //伸缩空间
layout->setMargin(10); //页边距
layout->setSpacing(10); //控件间隔
widget->setLayout(layout);

中间伸缩
addStretch

layout->addWidget(button_all);
layout->addWidget(button_sale);
layout->addStretch(); //伸缩空间
layout->addWidget(button_record);

两边伸缩
addStretch

layout->addStretch(); //伸缩空间
layout->addWidget(button_all);
layout->addWidget(button_sale);
layout->addWidget(button_record);
layout->addStretch(); //伸缩空间

QGridLayout
将控件放置到网格中布局,它本身会从父窗口或父布局中占据尽可能多的界面空间,然后把自己的空间划分为行和列,再把每个控件塞到设置好的一个或多个单元格中。通常情况下 QGridLayout不需要自己添加空白条 QSpacerItem,因为其他功能控件把各自的单元格占据之后,剩下没控件占据的单元格自然就是空的,空的格子默认里面什么都没有,也没有空白条

QGridLayout

QWidget *widget = new QWidget();
QPushButton *button_all = new QPushButton(tr("总情况"));
QPushButton *button_buy = new QPushButton(tr("入库"));
QGridLayout*layout = new QGridLayout();
layout->addWidget(button_all, 0, 0);
layout->addWidget(button_buy, 1, 2);
widget->setLayout(layout);

拉伸函数

QGridLayout::setColumnStretch(列码, 比例值);
QGridLayout::setRowStretch(行码, 比例值);

水平 1:2 拉伸
setColumnStretch

layout->addWidget(button_all, 0, 0);
layout->addWidget(button_buy, 0, 1);
layout->setColumnStretch(0, 1);
layout->setColumnStretch(1, 2);
posted @   thomas_blog  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示