Qt Designer的尺寸策略学习笔记

        在 PySide6(或者 PyQt6)中,小部件的 sizePolicy 主要用于控制小部件在布局中的行为,特别是在调整窗口大小时。sizePolicy 由两个主要策略组成:水平策略和垂直策略。它们可以进一步细分为伸展、固定、最小、最大等类型。

术语解释:    以宽度为例                                                                             

Fixed(固定):小部件的宽度是固定的,不会随父级窗口的大小调整而改变。
Minimum(最小):小部件的宽度可以增大,但不会小于其最小宽度。
Maximum(最大):小部件的宽度可以减小,但不会超过其最大宽度。
Preferred(首选):小部件的宽度会根据内容的需求调整,但也可以随父级窗口的大小调整。
Expanding(扩展):小部件会扩展以填满额外的空间,通常会与其他小部件一起填充布局。
Ignored(忽略):小部件的宽度策略被忽略,不参与布局计算。
MinimumExpanding(最小扩展):小部件将试图在布局中占据足够的空间来显示其内容,并且当布局有额外空间时,也会相应地伸展。

策略的进一步解释和优先级:

Fixed(固定):

小部件的大小是固定的,不随父窗口的大小改变。
优先级最低。


Minimum(最小):

小部件不会小于其最小尺寸,但可以扩展到更大的尺寸。
仍然可以接受布局提供的更多空间,但不会优先占用。


Maximum(最大):

小部件的大小可以扩大到最大尺寸,但不会超过这个值。
这个策略通常与 Minimum 或 Fixed 策略结合使用。


Preferred(首选):

小部件的大小根据内容要求设置一个首选大小,布局会优先考虑这个尺寸。
在没有额外空间的情况下,布局可以根据此值调整小部件的大小。


Expanding(扩展):

小部件会尽可能扩展以填满可用空间,与其他 Expanding 策略的小部件一起竞争空间。
优先级高于 Minimum 和 Preferred。


MinimumExpanding(最小扩展):

小部件至少会保持其最小大小,并有能力扩展以填充额外空间。
在需要时优先于 Minimum 和 Minimum 策略。


Ignored(忽略):

小部件的尺寸策略被忽略,不参与布局计算。
优先级最低,通常不希望使用此策略。
策略之间的关系与优先级


固定(Fixed) 小部件在尺寸方面是最不灵活的,通常不参与空间竞争。

忽略(Ignored) 策略中的小部件在布局中不做任何空间计算,但这同样不利于其大小,因此其使用应该非常谨慎。

最小(Minimum) 策略小部件最小只会按 minimumSizeHint() 的值展示并且可以扩展。

首选(Preferred) 策略给小部件一个理想的空间,但小部件仍然可以在需要时调整尺寸。

扩展(Expanding) 策略优先级更高于 Minimum 和 Preferred,它会尽量占用更多空间。

最小扩展(MinimumExpanding) 策略结合了 Minimum 和 Expanding 策略,可以保证小部件最小需求并尽量扩展。

        使用 Minimun 和 Expanding 时,每个小部件的 伸展因子 决定了其在父容器中所占的空间比例。即使两者都设置为 Expanding,具有更大伸展因子的小部件将占据更多的空间。

        测试用的组态画面,两个QL Abel,label1和label2,作为子部件。一个QFrame,作为父部件,将子部件拖入父部件,以下均以水平策略为例:

        将QFrame ax内设置为水平布局。子部件label1的策略为Minimum,minimumSize =100,maximumSize =400,子部件label2的策略为Expanding,其余默认。

        先把子部件label1拖进父部件,再温习一遍Minimum策略:

 所以,显示结果如下图:

        由于父部件只有label1 一个子部件,所以label1 接受了尽可能多的空间,直至maximumSize:400。如果此时将maximumSize设为默认最大值,它甚至会将父部件占满。这个似乎有些违背常理,在初学的时候曾经纠缠了我很久。因为我明明设的是Minimum策略,它为什么给设在了最大尺寸?所以一定要理解Minimum策略与minimumSize之间的关系,Minimum策略的含义是:小部件有一个尺寸的下限,当某种策略或设置使小部件的尺寸缩小时,尺寸不得小于minimumSize。换言之,实际的尺寸取决于策略的缩放趋势和相邻策略的优先级,以及伸展因子。

        接着往下:把子部件label2拖进父部件:

前面说过,子部件label2的策略为Expanding ,而

所以, 子部件label2的宽的就尽可能大,直到子部件label1的尺寸减小到minimumSize,100。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

FP分数规划在无线通信中的应用(II)

3. 具体例子 3.1-3.3都只需要用第一章concave-convex方法求解,3.4-3.6需要用到第二章的拉格朗日对偶变换,而且具体解 x \mathbf{x} x时需要对离散变量单独开发算法。 3.1 多小区SISO能量分配 第一个例子是具有一组单天线基站(BSs&#xff…

网工内推 | 合资公司、上市公司数据库工程师,OCP/OCM认证优先,双休

01 欣旺达电子股份有限公司 🔷招聘岗位:数据库管理高级工程师 🔷岗位职责: 1、负责数据库规划、管理、调优工作; 2、负责数据库应急预案制定、应急预案维护和应急支持; 3、负责数据库异常处理&#xff…

TwinCAT3 创建变量并链接

文章目录 右键 PLC 选择添加新项 选择 Standard PLC Project,并把名称改成英文,例如下图中的‘test’ 双击 POUs 文件下的 MAIN 开始编程,编辑一段简单的程序,输入导通输出 程序写好后右键 test Project,选择 Bu…

【Unity渲染】Drawcall优化:利用GPU高效渲染大量动画角色

在游戏开发中,创建一个充满活力和真实感的游戏世界是至关重要的。Render-Crowd-Of-Animated-Characters是一个专注于高效渲染大量动画角色的项目,它通过优化技术和算法,使得在Unity中渲染动画角色群集变得更加高效和可行。 项目概述 这个项…

【C 语言】深入理解冒泡排序算法

0. 前言 冒泡排序是一种经典且基础的排序算法。它虽然在效率上并非最优,但对于初学者理解排序的基本概念和逻辑有着重要的意义。 1. 冒泡排序的基本思想 冒泡排序的基本思想是通过反复比较相邻的元素并交换它们(如果顺序错误),…

使用Chainlit接入通义千问快速实现一个多模态的对话应用

开通灵识服务 首先需要到阿里云-模型服务灵积开通账户,获得apiKey 模型服务灵积 https://dashscope.aliyun.com/ 进入控制台 ,在API-KEY管理里,创建一个新的API-KEY,然后保存起来,后面会用到。 模型服务灵积服务所有API文档地址…

USB 接口小科普

专栏文章目录传送门:返回专栏目录 Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】 文章目录 目录 1. 基础概念 2. USB 接口 3. USB 传输标准 3.1 USB 传输速率 3.2 雷电技术 4 USB 总结 Hi&…

MyBatis-Plus知识总结

1. MP前瞻 官网:https://baomidou.com/ 1、MyBatis-Plus是什么:MyBatis-Plus(简称MP)是一个MyBatis的增强工具,它在MyBatis的基础上只做增强不做改变,为简化开发、提供效率而生。并且MP内部提供了丰富的 AP…

企业数据防泄密软件知多少

企业数据防泄密软件是保护企业或组织内部敏感信息不被非法泄露的重要技术工具。加密系统功能多样,通过该系统来监控、管理和保护数据,确保数据在内部网络、终端设备以及互联网上的安全传输和存储。 一、企业数据防泄密软件详解(主要功能&…

arduino程序-程序函数2(led电路及相关函数)(基础知识)

arduino程序-程序函数2(led电路及相关函数)(基础知识) 1-9 程序函数2(led电路及相关函数)点亮LED需要Blink程序PinMode(LED_BUTTIN,OUTPUT)DigitalWrite(LED_BUILTIN,HIGH)第一个参数(13/LED_BUILTIN)第二个…

QT——信号和槽学习笔记

Qt 信号和槽 信号和槽(Signals and Slots)是Qt框架中的核心机制之一,用于对象之间的通信。它们提供了一种非常灵活和类型安全的事件处理系统,允许对象之间在发生特定事件时进行交互,而不需要紧密耦合。这使得代码更易…

App尺寸:5个创新方法,提升界面吸引力

当用户打开应用程序时,应用程序图标是用户认知品牌的第一个门槛,可以直接影响用户对应用程序的第一印象。应用程序图标尺寸直接影响应用程序图标的视觉效果,这也是决定用户是否愿意下载应用程序图标的关键因素。应用程序图标尺寸规范在图标设…

SEO优化 prerender-spa-plugin工具使用 踩坑记录

安装prerender-spa-plugin yarn add prerender-spa-plugin 或 npm install prerender-spa-plugin初始配置 后面记录踩的坑 配置路由 const routes [{path: /,redirect: {path: /HomeView},},{path: /home,redirect: {path: /HomeView},},{ path: /HomeView,component: HomeV…

Linux 用户管理模式

目录 1. 概述 2. 管控级别 3. 用户组管理 4. 用户管理 4.1 创建用户 useradd 4.2 删除用户 userdel ​编辑4.3 查看用户所属组 id 4.4 修改用户所属组 usermod 5. 查看用户/用户组 5.1 查看系统用户 5.2 查看系统用户组 1. 概述 Linux 可以配置多个用户&#xff0c…

C# 调用Webservice接口接受数据测试

1.http://t.csdnimg.cn/96m2g 此链接提供测试代码; 2.http://t.csdnimg.cn/64iCC 此链接提供测试接口; 关于Webservice的基础部分不做赘述,下面贴上我的测试代码(属于动态调用Webservice): 1&#xff…

ros笔记04--从零体验ros2行为通信方式

ros笔记04--从零体验ros2行为通信方式 介绍创建步骤体验官方案例基于python开发行为案例创建action接口创建action sever和client 注意事项说明 介绍 行为是ros2中的一种通信方式,其多被用于一些长时间运行的任务,它包含了目标、反馈、结果三部分。 行为…

Qt Creator使用git管理代码

1.在GitHub中新建仓库,设置好仓库名后,其它的设置默认即可。 2.打开git bash,输入以下命令: git config --global user.name "xxxxx" #设置你的GitHub用户名 git config --global user.email "xxxxxxxxx.…

79.WEB渗透测试-信息收集-框架组件识别利用(3)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:78.WEB渗透测试-信息收集-框架组件识别利用(2)-CSDN博客 struts2…

GPT-4o mini- 开发者的新宠儿

在人工智能的浪潮中,一颗新星正在冉冉升起。OpenAI最新发布的GPT-4o mini模型以其惊人的性能和极具竞争力的价格,正在成为开发者们的新宠儿。作为一名大数据开发者,我深深被这个"迄今为止最具成本效益的小模型"所吸引。让我们一起探索GPT-4o mini的魅力,看看它如何改…

docker(一):Develop faster. Run anywhere.

前言 在进行微服务部署时,首先需要进行部署环境的搭建。目前,Docker 已经成为了微服务部署的主流解决方案之一。Docker 可以帮助我们更快地打包、测试以及部署应用程序,从而缩短从编写到部署运行代码的周期。 在本文中,我们将对…