欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Qt 布局管理器的层级关系

Qt 布局管理器的层级关系

2025/11/11 2:33:23 来源:https://blog.csdn.net/qq_33867131/article/details/148141333  浏览:    关键词:Qt 布局管理器的层级关系

1、HomeWidget.h头文件:

#ifndef HOMEWIDGET_H
#define HOMEWIDGET_H#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>class HomeWidget : public QWidget
{Q_OBJECTpublic:HomeWidget(QWidget *parent = nullptr);~HomeWidget();// 3、声明一个QWidget对象QWidget *mainWidget;QWidget *topWidget;QWidget *leftWidget;QWidget *rightWidget;QWidget *bottomWidget;// 主布局QVBoxLayout *mainLayout;QHBoxLayout *middleLayout;// 各部件内部布局QVBoxLayout *topLayout;QVBoxLayout *leftLayout;QVBoxLayout *rightLayout;QHBoxLayout *bottomLayout;};
#endif // HOMEWIDGET_H

2、HomeWidget.cpp类的实现:

#include "HomeWidget.h"HomeWidget::HomeWidget(QWidget *parent): QWidget(parent)
{// 覆盖在顶层窗口之上的QWidget主部件mainWidget = new QWidget(this);// 创建各个区域的部件topWidget = new QWidget(mainWidget);leftWidget = new QWidget(mainWidget);rightWidget = new QWidget(mainWidget);bottomWidget = new QWidget(mainWidget);// 为顶层窗口设置布局规则QVBoxLayout *layout = new QVBoxLayout(this);layout->addWidget(mainWidget);// 设置主部件的布局规则mainLayout = new QVBoxLayout(mainWidget);// 1、将topWidget添加到主布局中mainLayout->addWidget(topWidget);// 2、设置中间部件的布局middleLayout = new QHBoxLayout();middleLayout->addWidget(leftWidget);middleLayout->addWidget(rightWidget);mainLayout->addLayout(middleLayout);// 3、将topWidget添加到主布局中mainLayout->addWidget(bottomWidget);/***1、在Qt里,把一个部件设置为另一个部件的子部件,和把这个部件添加到布局管理器中,这是两个不同的操作,它们有着不同的作用:
(1)设置子部件:topWidget = new QWidget(mainWidget);此操作让topWidget在 GUI 的层级结构里,成为mainWidget的子部件;从视觉呈现上来说,topWidget会被显示在mainWidget的区域范围之内;不过,此时topWidget的具体位置和大小并没有被确定,它默认会出现在父部件的左上角,尺寸则是系统设定的默认值;
(2)添加到布局管理器:mainLayout->addWidget(topWidget);该操作把topWidget纳入到mainLayout的管理体系之中;布局管理器会对topWidget的几何属性,也就是位置和大小进行计算和控制,使其能够根据布局规则,合理地填充分配到的空间;要是没有这一步操作,虽然部件已经存在于父部件之中,但不会按照预期的布局规则来显示;*//*** 布局管理器的层级关系:*HomeWidget(顶层窗口)
├─ layout(管理顶层窗口内的布局)
│  └─ mainWidget(mainWidget窗口,覆盖整个顶层窗口)
│     └─ mainLayout(管理mainWidget窗口内的布局)
│        ├─ topWidget(顶部窗口)
│        ├─ middleLayout(水平布局)
│        │  ├─ leftWidget(左侧窗口)
│        │  └─ rightWidget(右侧窗口)
│        └─ bottomWidget(底部窗口)*/// 设置对象名称,以便在样式表中引用mainWidget->setObjectName("mainWidget");topWidget->setObjectName("topWidget");leftWidget->setObjectName("leftWidget");rightWidget->setObjectName("rightWidget");bottomWidget->setObjectName("bottomWidget");// 设置样式表QString style = R"(#mainWidget {background-color: black;}#topWidget {background-color: red;}#leftWidget {background-color: green;}#rightWidget {background-color: pink;}#bottomWidget {background-color: blue;})";// 应用样式表到当前窗口setStyleSheet(style);}HomeWidget::~HomeWidget() {}

3、运行结果:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词