一、什么是布局管理器?
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

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

被折叠的 条评论
为什么被折叠?



