Qt 布局管理

布局基础

1)Qt 布局管理系统使用的类的继承关系如下图:
在这里插入图片描述
QLayout 和 QLayoutItem 这两个类是抽象类,当设计自定义的布局管理器时才会使用到,通常使用的是由 Qt 实现的 QLayout 的几个子类。

2)Qt 使用布局管理器的步骤如下

  • 首先创建一个布局管理器类的对象。
  • 然后使用该布局管理器类中的 addWidget()函数,把需要由布局管理器管理的部件添加进来。还可使用 addLayout()函数把其他布局管理器添加进来。
  • 最后使用 QWidget::setLayout()函数为窗口设置布局管理器。
    使用过程中的注意事项:
  • 若为布局指定了父部件,则可以不使用 QWidget::setLayout()函数,反之,调用QWidget::setLayout()函数安装布局,则可以不为该布局指定父部件。
  • 不需要为添加到布局中的部件指定父部件,布局中的部件会自动成为安装布局的部件的子部件(使用 QWidget::setParent())。注意:子部件的父部件不是布局,而是安装布局的部件。

3)部件拉伸因子(Stretch):拉伸因子描述了各个部件在进行拉伸时,多个部件之间应以怎样的比例进行拉伸。使用设置拉伸因子的函数(如setStretch)时,应注意在添加部件之后使用,否则将不起作用

4)内容边距(ContentsMargins)、间距(spacing)和 QSpacerItem 类解释:

  • 内容边距(ContentsMargins):就是页边距,指的是布局中的各子部件(内容)与周围四个边的距离。常用函数如void QLayout::setContentsMargins(int left, int top, int right, int bottom);
  • 间距(spacing)指的是各部件之间的距离
  • QSpacerItem 类:使用该类可以创建自定义的间距,使用该类创建的间距相当于是一个空白部件,它是布局中的一个项目,会在布局中占据一个位置,布局会为其分配一个索引号,也就是说由QSpacerItem 类创建的对象是可以由布局管理器进行管理的。通常不需要使用这个类,因为在各布局管理器中有相应的函数代替了该类的功能。
    注意spacing 属性设置的间距不是一个 QSpacerItem,它不是布局中的一个项目,spcing 属性只是设置了两部件之间的距离,在这之间未插入任何东西,因此布局不会为其分配索引号

QBoxLayout类

QBoxLayout 盒式布局管理器,可以创建水平或垂直方向的布局管理器,通常使用的是该类的两个子类 QHBoxLayout 和 QVBoxLayout。

QBoxLayout 布局中的常用成员函数如下:

  • QBoxLayout(Direction dir, QWidget* parent = Q_NULLPTR);
    构造一个方向为 dir 的盒式布局
  • void addLayout(QLayout* layout, int stretch = 0);
    void insertLayout(int index, QLayout* layout, int stretch = 0);
    把布局layout添加到末尾或在指定索引index处插入布局,并设置其拉伸因子为stretch,若 index 为负,则添加到末尾。
  • void addWidget(QWidget* widget, int stretch = 0, Qt::Alignment m = Qt::Alignmnet());
    void insertWidget(int index, QWidget* widget, int stretch = 0, Qt::Alignment m = Qt::Alignmnet());
    把部件 widg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/696684.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ教程(三):RocketMQ的核心组件

四个核心组件 RocketMQ 的架构采用了典型的分布式系统设计理念,以确保高性能、高可用和可扩展性。RocketMQ 主要由四个核心组件构成:NameServer、Broker、Producer 和 Consumer。下面是对这些组件以及它们在 RocketMQ 中的角色和功能的概述: 1. NameServer 角色和功能:Name…

28.找零

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/744 题目描述 有一台自动售票机,每张票卖 …

C++11:列表初始化 初始化列表initializer_list decltype关键字

目录 前言 列表初始化 初始化列表initializer_list decltype关键字 左值和右值 move 前言 2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字取代了C98成为了C11前最新的C标准名称。不过由于C03主要是对C98标准中的…

C++必修:探索C++的内存管理

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. C/C的内存分布 我们首先来看一段代码及其相关问题 int globalVar 1; static…

Java从入门到放弃

线程池的主要作用 线程池的设计主要是为了管理线程,为了让用户不需要再关系线程的创建和销毁,只需要使用线程池中的线程即可。 同时线程池的出现也为性能的提升做出了很多贡献: 降低了资源的消耗:不会频繁的创建、销毁线程&…

Helm离线部署Rancher2.7.10

环境依赖: K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中,Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…

CorelDRAW2024破解激活码序列号一步到位

亲们,今天给大家种草一个神奇的软件——CorelDRAW破解2024最新版!🎨这是一款专业级的矢量图形设计软件,无论你是平面设计师、插画师还是设计师,都能在这个软件中找到你需要的工具和功能。✨ 让我来给大家介绍一下这款软…

OpenGauss数据库-7.用户及角色

第1关:创建用户 gsql -d postgres -U gaussdb -W passwd123123 CREATE USER jackson WITH PASSWORD jackson123; 第2关:修改用户 gsql -d postgres -U gaussdb -W passwd123123 ALTER USER jackson WITH PASSWORD Abcd123; 第3关:创建角色 …

MySQL 常见客户端程序

本篇主要介绍MySQL常见的客户端程序 目录 一、mysqlcheck 二、mysqldump 三、mysqladmin 四、mysqldumpslow 五、mysqlbinlog 六、mysqlshow 显示列的具体信息​编辑 七、mysqlslap 一、mysqlcheck mysqlcheck是MySQL的表维护程序,其功能主要包含以下四个方…

传感器展会|2024厦门传感器与应用技术展览会

传感器展会|2024厦门传感器与应用技术展览会 时间:2024年11月1-3日 地点:厦门国际会展中心 XISE EXPO展会介绍: 2024中国(厦门)国际传感器与应用技术展览会将于2024年11月1-3日在厦门国际会展中心举行&#xf…

Docker快速部署springboot项目

本文概述 本文主要介绍了怎么将springboot项目打包为docker镜像,并如何在后端服务器上使用docker快速部署springboot应用和nginx应用。 一、打包springboot项目 1、复制原来的application.yml文件然后重命名为application-pro.yml文件,将application-pro…

Stable-Diffusion的WebUI部署

1、环境准备及安装 1.1、linux环境 # 首先,已经预先安装好了anaconda,在这里新建一个环境 conda create -n sdwebui python3.10 # 安装完毕后,激活该环境 conda activate sdwebui# 安装 # 下载stable-diffusion-webui代码 git clone https:…

高考志愿填报:大学学什么专业比较好呢?

准高三一枚,比较迷茫,求推荐一些专业以后比较好就业,发展前景较好的。听说互联网行业比较吃香,有想过以后做运营这一块,但是不知道应该在大学选什么专业,求推荐吧! 学什么专业好? 这…

ollama webui 11434 connection refused

报错:host.docker.internal:11434 ssl:default [Connection refused] 将/etc/systemd/system/ollama.service中加上如下红框两行 然后 systemctl daemon-reload systemctl restart ollama然后删掉之前的container。 最后 sudo docker run -d -p 4000:8080 --add-…

Vue3学习日记(day2)

目录 前言 注意事项 vite使用 1:控制台vite创建vue 2:使用可视化软件(我使用为vscode)npm安装对应依赖包 3:使用npm脚本或者直接在终端输入命令运行软件后打开生成网址 4:打开网址正常进入网页 rou…

SpringBoot3+Mybatis-Plus+h2数据库,入门Mybatis-Plus

SpringBoot3Mybatis-Plush2数据库,入门Mybatis-Plus mybatis-plus官网地址maven依赖数据库脚本配置文件实体类Mapper入门程序启动程序测试单元测试测试结果 Service层接口service层接口单元测试测试结果 项目结构 mybatis-plus官网地址 https://www.baomidou.com/ …

IP地址冲突检测(Address Conflict Detect)记录

学习目标: 提示:ACD(IP地址冲突检测)原理学习与抓包分析 学习记录: 1、Address Conflict Detection地址冲突检测,简称ACD。RFC 5227提出ACD机制。其中ACD将arp request分为ARP probe和ARP announcement两种; ACD定义…

深入理解 C++ 智能指针

文章目录 一、引言二、 原始指针的问题1、原始指针的问题2、智能指针如何解决这些问题 三、智能指针的类型四、std::shared_ptr1、shared_ptr使用2、shared_ptr的使用注意事项3、定制删除器4、shared_ptr的优缺点5、shared_ptr的模拟实现 五、std::unique_ptr1、unique_ptr的使…

Java_中间件——Redis

Redis 介绍: Redis是一个基于内存的key-value结构数据库(MySQL是通过数据文件方式存储在磁盘上,数据结构是二维表) 特点: 更改配置文件: 使用密码: redis默认是不需要密码的,如果…

spring-data-mongodb版本兼容问题

spring-data-mongodb与mongodb驱动有兼容性问题,不匹配会报NoSuchMethod异常,mongodb的java驱动包在4.0之后由mongodb-java-driver更名为mongodb-driver-sync。 spring-data-mongodb包依赖中有mongodb-driver-core,但缺诸如MongoCollection等…