Qt编程基础 | 第四章-布局管理器 | 4.1、布局管理器简介

本文介绍了Qt中的五种布局管理器,包括QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout和QStackedLayout,详细阐述了它们的作用、用法及实例,帮助开发者理解如何使用这些布局管理器来实现自适应界面和高效代码编写。

一、什么是布局管理器?

1.1、布局管理器的作用

布局管理器是摆放控件的辅助工具,主要解决组件的位置和大小无法自适应父窗口变化的问题,主要功能如下:

  • 自动调整控件的位置,包括控件之间的间距、对齐等
  • 当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观

借助布局管理器,无需再逐个调整控件的位置和大小,可以将更多的精力放在软件功能的实现上。

1.2、布局管理器类继承结构图

Qt 共提供了 5 种布局管理器,每种布局管理器对应一个类,分别是 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和 QStackedLayout(分组布局),继承关系如下图:

在这里插入图片描述

二、布局管理器样式

2.1、QVBoxLayout(垂直布局)

将所有控件从上到下(或者从下到上)依次摆放,例如:

在这里插入图片描述

int main(int argc, char *argv[])
{
   
   
	QApplication a(argc, argv);
	//创建主窗口
	QWidget widget;
	//设置窗口标题
	widget.setWindowTitle("QVBoxLayout");
	//设置窗口大小
	widget.resize(500, 250);

	//创建垂直布局管理器
	QVBoxLayout *layout = new QVBoxLayout;
	//置布局管理器中所有控件从下往上依次排列
	layout->setDirection(QBoxLayout::BottomToTop);

	//连续创建 3 个文本框,并设置它们的背景和字体大小
	QLabel lab1("Label1");
	lab1.setStyleSheet("QLabel{background:#dddddd;font:20px;}");
	lab1.setAlignment(Qt::AlignCenter);
	QLabel lab2("Label2");
	lab2.setStyleSheet("QLabel{background:#cccccc;font:20px;}");
	lab2.setAlignment(Qt::AlignCenter);
	QLabel lab3("Label3");
	lab3.setStyleSheet("QLabel{background:#ffffff;font:20px;}");
	lab3.setAlignment(Qt::AlignCenter);

	//设置控件外边距
	layout->setMargin(30);
	//添加控件,控件的伸缩系数比是 1:1:1
	layout->addWidget(&lab1, 1);
	//设置控件间距(当前例子是不同label之间的间距,大小是固定的)
	layout->addSpacing(20);
	layout->addWidget(&lab2, 1);
	layout->addSpacing(20);
	layout->addWidget(&lab3, 1);

	//将布局管理器添加到widget窗口中
	widget.setLayout(layout);
	widget.show();
	return a.exec();
}

2.2、QHBoxLayout(水平布局)

水平布局指的是将所有控件从左到右(或者从右到左)依次摆放,例如:

在这里插入图片描述

int main(int argc, char *argv[])
{
   
   
	QApplication a(argc, argv);
	//创建主窗口
	QWidget widget;
	//设置窗口标题
	widget.setWindowTitle("QHBoxLayout");
	//设置窗口大小
	widget.resize(500
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值