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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

封装了一个简单理解的iOS竖直文字轮播

效果图 原理 就是持有两个视图,并且两个视图同时改变origin.y 动画结束之后,判断哪个视图是在上面并且看不到的, 则将该视图移动到底部,并且该视图展示下一跳内容 在开始下一轮动画 代码 - (void)startAnimationWithDuration:(…

React 和 Vue的跨端|跨平台框架介绍

React 和 Vue 都有各自的生态系统,可以实现跨平台开发,包括 Web、iOS、Android 和其他平台。 Vue.js 的跨平台框架和服务器端渲染框架: Weex:Weex 是一个由阿里巴巴开发的跨平台框架,它可以使用 Vue.js 编写原生应用&a…

【Linux】网络配置(静态/动态/手动/nmcli)

目录 一、手动修改网络配置文件:静态 二、手动修改网络配置文件:动态 三、nmcli工具命令修改网络配置文件:静态 四、nmcli工具命令修改网络配置文件:动态 错误排查分析:编辑虚拟网络编辑器不生效 1、排除VMware启…

攻防世界---misc---gif

1、题目描述 2、下载附件,是一堆黑白图片,看到这里我一头雾水 3、看别人写的wp,说是白色表示0,黑色表示1。按照顺序写出来后得到 4、解码的时候,把逗号去掉。二进制转字符串得到: 5、 flag{FuN_giF}

24点 算法

这里写自定义目录标题 起因需求分析Python Code 起因 今天和孩子们一起玩24点, 发现有点玩不过。 想到可以用编程的方法写一个小程序来玩。 需求分析 需求输入输入1到13的数,这个可以用图像识别方案来做。 参考项目扑克牌识别 [https://blog.csdn.net…

阿里通义千问 Qwen2 大模型开源发布

阿里通义千问 Qwen2 大模型开源发布 Qwen2 系列模型是 Qwen1.5 系列模型的重大升级。该系列包括了五个不同尺寸的预训练和指令微调模型:Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B 以及 Qwen2-72B。 在中文和英文的基础上,Qwen2 系列的训练数…

C++11原子操作

目录 1.什么是原子操作 2.为什么需要原子操作? 3.C中的原子操作 4.原子操作使用及注意 5.应用场景 6.使用原子操作的最佳实践 7.原子操作与锁机制的比较 8.总结 1.什么是原子操作 原子操作是一种不可分割的操作,即在多线程环境中,这些…

Linux介绍-以CentOS和Ubuntu为例---linux入门01

Linux是一种广泛使用的开源操作系统,以其稳定性、安全性和灵活性而闻名。本文将详细介绍Linux操作系统,重点讨论CentOS和Ubuntu这两个常见的发行版,并比较它们的特点、适用场景以及在实际应用中的优劣。 01 Linux操作系统概述 1.1 Linux的起…

Docker面试整理-如果Docker容器无法启动,你会如何诊断和解决问题?

当 Docker 容器无法启动时,可以通过一系列步骤来诊断和解决问题。这些步骤有助于确定问题的根源并采取相应的解决措施。以下是处理 Docker 容器启动问题的一般流程: 1. 检查容器日志 命令:docker logs <container-id或container-name>此命令将显示容器的输出日志,可能…

深度学习与人工智能

深度学习&#xff0c;是一种特殊的人工智能&#xff0c;他与人工智能及机器学习的关系如下&#xff1a; 近些年来&#xff0c;基于人工神经网络的机器学习算法日益盛行起来&#xff0c;逐渐呈现出取代其他机器学习算法的态势&#xff0c;这主要的原因是因为人工神经网络中有一中…

代码随想录算法训练营第17天|二叉树

平衡二叉树 这种开销太大了&#xff0c;最好是能够在获得子树高的递归中同时判断子树是否平衡&#xff0c;但是我纠结的是递归的输出是布尔类型&#xff0c;而不是数字类型&#xff0c;怎么在迭代子树是否平衡时计算子树的高度呢&#xff08;迭代可以计算&#xff0c;但是我想…

php高级之框架源码、宏扩展原理与开发

在使用框架的时候我们经常会看到如下代码 类的方法不会显示地声明在代码里面&#xff0c;而是通过扩展的形式后续加进去&#xff0c;这么做的好处是可以降低代码的耦合度、保证源码的完整性、团队开发的时候可以分别写自己的服务去扩展类&#xff0c;减少代码冲突等等。我自己…

C语言之常用字符串函数总结、使用和模拟实现

文章目录 目录 一、strlen 的使用和模拟实现 二、strcpy 的使用及模拟实现 三、strcat 的使用和模拟实现 四、strcmp 的使用和模拟实现 五、strncpy 的使用和模拟实现 六、strncat 的使用和模拟实现 七、strncmp 的使用和模拟实现 八、strstr 的使用和模拟实现 九、st…

使用Python批量处理Excel的内容

正文共&#xff1a;1500 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在前面的文章中&#xff08;如何使用Python提取Excel中固定单元格的内容&#xff09;&#xff0c;我们介绍了如何安装Python环境和PyCharm工具&#xff0c;还利用搭好的环境简单测试了一下ChatGPT提…

java程序提供默认实现策略,并支持自定义实现策略的一种方式?并如何避雷?

java程序提供默认实现策略&#xff0c;并支持自定义实现策略的一种方式&#xff1f;并如何避雷&#xff1f; 方案&#xff1f; 说明&#xff1a; 当前是基于自定义策略注册由工具类提供&#xff0c;且默认实现策略全局可访问的前提下进行探讨&#xff0c;其他场景也可进行参…

Java 数据类型 -- Java 语言的 8 种基本数据类型、字符串与数组

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 004 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

如何秒杀系统架构设计

原文路径:https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e5%a6%82%e4%bd%95%e8%ae%be%e8%ae%a1%e4%b8%80%e4%b8%aa%e7%a7%92%e6%9d%80%e7%b3%bb%e7%bb%9f/00%20%e5%bc%80%e7%af%87%e8%af%8d%20%e7%a7%92%e6%9d%80%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84%e8%ae%be%e8%ae%…

纳什均衡:博弈论中的运作方式、示例以及囚徒困境

文章目录 一、说明二、什么是纳什均衡&#xff1f;2.1 基本概念2.2 关键要点 三、理解纳什均衡四、纳什均衡与主导策略五、纳什均衡的例子六、囚徒困境七、如何原理和应用7.1 博弈论中的纳什均衡是什么&#xff1f;7.2 如何找到纳什均衡&#xff1f;7.3 为什么纳什均衡很重要&a…

素数的无穷大的证明

素数的无穷大——欧几里得的证明 文章目录 一、说明二、欧几里得证据三、哥德巴赫对素数无穷性的证明&#xff08;1730&#xff09;四、Frstenberg 对素数无穷性的证明(1955)五、库默尔对欧几里得证明的重述 一、说明 众所周知&#xff0c;素数是无限多的。然而&#xff0c;两…

运维一个宝塔面板的php项目的艰辛历程【解决了http3,ssl,quic】

在这个项目的环境 使用了宝塔面板 有4个php:php5.6,php7.3,php7.4,php8.0 nignx为1.20版本 升级计划&#xff1a; 升级nginx1.26.0版本&#xff0c;添加上http3协议&#xff0c;添加ssl证书 遇到的问题&#xff1a; 升级nginx1.26版本后 无法打开php5.6的后台 原因&#xff…