当前位置: 首页 > news >正文

Pyside6 布局管理器(4)--- QGridLayout的使用

一、QGridLayout的介绍(官翻)

QGridLayout 获得可用的空间(由其父布局或 parentWidget() 提供),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。
 
列和行的行为是相同的;我们将讨论列,但行也有等效的功能。
 
每列都有最小宽度和拉伸系数。最小宽度是使用 setColumnMinimumWidth() 设置的宽度和该列中每个小部件的最小宽度中的最大值。拉伸因子使用setColumnStretch()设置,并确定列将获得多少可用空间,超过其必要的最小值。
 
通常,每个托管控件或布局都使用 addWidget() 放入自己的单元格中。通过使用 addItem() 和 addWidget() 的行和列跨度重载,小部件也可以占用多个单元格。如果你这样做,QGridLayout会猜测如何在列/行上分配大小(基于拉伸因子)。
 
要从布局中删除小部件,请调用 removeWidget() 。在 widget 上调用 hide() 也会有效地从布局中删除该 widget,直到调用 show()。
 
此图显示了具有五列三行网格的对话框的一部分(网格以洋红色显示):
 
此对话框片段中的第0、2和4列由一个QLabel、一个QLineEdit和一个QListBox组成。第1列和第3列是用setColumnMinimumWidth() 制作的占位符。第0行由三个QLabel对象组成,第1行由三个QLineEdit对象组成,第2行由三个QListBox对象组成。我们使用占位符列(1和3)来获得列之间的正确空间量。
 
请注意,列和行的宽度或高度并不相等。如果你想让两列具有相同的宽度,你必须自己将它们的最小宽度和拉伸系数设置为相同。可以使用 setColumnMinimumWidth() 和 setColumnStretch() 来执行此操作。
 
如果 QGridLayout 不是顶级布局(即不管理所有窗口小部件的区域和子窗口小部件),则必须在创建它时,但在对其进行任何操作之前,将其添加到其父布局中。添加布局的正常方法是在父布局上调用 addLayout()。
 
添加布局后,您可以使用 addWidget()、 addItem() 和 addLayout() 将小部件和其他布局放入网格布局的单元格中。
 
QGridLayout还包括两个边距宽度:内容边距和间距()。内容边距是沿 QGridLayout 四边预留空间的宽度。间距()是相邻方框之间自动分配的间距的宽度。
 
默认的内容边距值由样式提供。Qt样式指定的默认值是子控件为9,窗口为11。间距默认值与顶级布局的边距宽度相同,或与父布局相同。。

二、QGridLayout的相关方法

1.QGridLayout的创建及基本使用

API函数

参数说明

返回值

功能作用

QGridLayout(self,parent)

parent:QWidget

None

创建网格布局实例

addWidget(self,w,row,column,

rowspan=None,columnspan=None,

alignment=Deafult(Qt.Alignment))

w:QWidget

row:int column:int

rowspan:int column:int

alignmen:Qt.Alignmen

None

按照行列索引位置添加控件

addLayout(self,l,row,column,

rowspan=None,columnspan=None,

alignment=Deafult(Qt.Alignment))

w:l

row:int column:int

rowspan:int column:int

alignmen:Qt.Alignmen

None

按照行列索引位置添加子布局

行、列的索引均从0开始,最上面一行为第0行,而非第1行;最左侧一列为第0列,而非第1列。

rowspan和columnspan两个参数的意义是,加入的这个控件所占位置跨几行或几列。比如下例中的日历控件,其columnspan=2,即其站一行两列的位置。好比我们在excel中将一行的两个列单元格合并形成的控件分配给日历控件。

Alignment参数针对控件内容的对齐方式,通常不做设置。

example:

from PySide6.QtWidgets import QWidget,QApplication,QGridLayout,QPushButton,
QLabel,QLineEdit,QCalendarWidget
from PySide6.QtCore import Qt
import sysclass MyWindow(QWidget):def __init__(self):super(MyWindow, self).__init__()# 创建一个网格布局lay = QGridLayout(self)# 创建2各标签、2个单行文本框、2个按钮和1个日历控件lab1 = QLabel("账号:")lab2 = QLabel("密码:")line1 = QLineEdit()line2 = QLineEdit()calendar_1 = QCalendarWidget()btn1 = QPushButton("确定")btn2 = QPushButton("取消")# 将控件通过索引放置相应位置中lay.addWidget(lab1, 0, 0, Qt.AlignmentFlag.AlignRight)lay.addWidget(line1, 0, 1)lay.addWidget(lab2, 1, 0, Qt.AlignmentFlag.AlignRight)lay.addWidget(line2, 1, 1)lay.addWidget(btn1, 2, 0)lay.addWidget(btn2, 2, 1)lay.addWidget(calendar_1,3,0,1,2)if __name__ == '__main__':app = QApplication(sys.argv)win = MyWindow()win.show()sys.exit(app.exec())

运行结果:

2.QGridLayout的其他相关方法

API函数

参数说明

返回值

功能作用

setGeometry(self, arg__1)

arg_1:QRect

None

设置网格布局大小

setRowMinimumHeight(self, row, minSize)

row:int

minSize:int

None

设置索引行的最小行高

rowMinimumHeight(self, row)

row:int

int

获取索引行的最小行高

setColumnMinimumWidth(self, column, minSize)

column:int

minSize:int

None

设置索引行的最小行高

columnMinimumWidth(self, column)

column:int

int

获取索引行的最小行高

setContentsMargins(self, left, top, right, bottom)

left:int top:int

ringhtLint bottom:int

None

设置布局的内容边距(参数为左上右下的尺寸)

setContentsMargins(self, margins)

margins:QMargin

None

设置布局的内容编剧(参数为QMargin对象)

getContentsMargins(self):

None

tupe(left,top,

right,bottom)

以元组形式返回布局内容边距的四边值

contentsMargins(self)

None

QMargin

获取一个布局的内容边距

unsetContentsMargins(self)

None

None

取消设置布局周围的任何用户定义的边距。布局将使用样式提供的默认值。

setsapcing(self,spacing)

spacing:int

None

设置布局控件间的空白间距(水平及垂直)

spacing(self)

None

spacing:int

获取布局控件间的空白间距(水平及垂直)

setHorizontalSpacing(self, spacing)

spacing:int

None

设置布局控件间的水平空白间距(列间距)

setVerticalSpacing(self, spacing)

spacing:int

None

设置布局控件间的垂直空白间距(行间距)

setRowStretch(self, row, stretch)

row:int

stretch:int

None

设置索引行的伸缩因子

rowStretch(self, row)

row:int

stretch:int

获取索引行的伸缩因子

setColumnStretch(self, column, stretch)

column:int

stretch:int

None

设置索引列的伸缩因子

columnStretch(self, column)

column:int

stretch:int

获取索引列的伸缩因子

cellRect(self, row, column)

row:int

column:int

QRect

返回索引位置的单元格矩形

count(self)

None

int

获取布局内控件数量

rowCount(self)

None

Int

获取布局行数

columnCount(self)

None

Int

获取布局列数

getItemPosition(self, idx)

idx:int

tuple(row:int

column:int

rowspan:int

columnspan:int)

通过条目索引获取该位置的信息,返回值是一个包含行、列、跨行数、跨列数的元组

itemAtPosition(self, row, column)

row:int

column:int

QLayoutItem

返回索引位置的条目对象

removeWidget(self,w)

w:QWidget

None

移除布局的子控件w

replaceWidget(from,to,option)

from:QWidget

to:QWidget
option: Qt.FindChildOption

option为枚举类

QLayoutItem

搜索小部件from并将其替换为小部件to。成功时返回包含小部件的布局项。否则返回None。

返回的布局项不再属于该布局,应该删除或插入到另一个布局中。小部件from不再由布局管理,可能需要删除或隐藏。widget from的父类保持不变。

此函数适用于内置Qt布局,但可能不适用于自定义布局。

setOriginCorner(self, arg__1)

arg_1:Qt.Corner

Qt枚举类

None

设置布局矩形的原点角

originCorner(self)

None

Qt.Corner

获取布局矩形的原点角

这些方法中尺寸因子和空白的设置在上节中已经详细的进行了解释。其他的相关方法在表中功能作用栏基本已经说明,这里不再讲解。

相关文章:

Pyside6 布局管理器(4)--- QGridLayout的使用

一、QGridLayout的介绍(官翻) QGridLayout 获得可用的空间(由其父布局或 parentWidget() 提供),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。 列和行的行为是相同的;我们将…...

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

引言 在OpenAI DevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新。CEO Sam Altman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自己的需求打造个性化的GPT,并分享至GPT Store。这一消息对于受…...

「漏洞复现」BladeX企业级开发平台 tenant/list SQL 注入漏洞复现(CVE-2024-33332)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…...

基于SSM的消防物资存储系统【附源码】

基于SSM的消防物资存储系统 效果如下: 用户功能界面 仓库管理界面 物资入库管理界面 物资出库管理界面 物资详情管理界面 报警通知管理界面 安全检查提醒管理界面 管理员功能界面 研究背景 21世纪,我国早在上世纪就已普及互联网信息,互联网…...

Pseudo Multi-Camera Editing 数据集:通过常规视频生成的伪标记多摄像机推荐数据集,显著提升模型在未知领域的准确性。

2024-10-19,由伊利诺伊大学厄巴纳-香槟分校和香港城市大学的研究团队提出了一种创新方法,通过将常规视频转换成伪标记的多摄像机视角推荐数据集,有效解决了在未知领域中模型泛化能力差的问题。数据集的创建,为电影、电视和其他媒体…...

认识一下 Mochi-1--最新的免费开源人工智能视频模型

Genmo 是一家专注于视频生成的人工智能公司,该公司宣布发布 Mochi 1 的研究预览版。Mochi 1 是一种新的开源模型,可根据文本提示生成高质量视频,其性能可与 Runway 的 Gen-3 Alpha、Luma AI 的 Dream Machine、Kuaishou 的 Kling、Minimax 的…...

Spring 的事务传播机制

Spring 的事务传播机制定义了一个事务方法在遇到已经存在的事务时如何处理。事务传播属性(Propagation)提供了七种机制,以适应不同的业务需求和事务边界管理。 1. Spring 的事务传播机制的类型 (1)REQUIRED&#xff…...

线性代数(1)——线性方程组的几何意义

线性代数的基本问题是求解个未知数的个线性方程; 例如:(方程1)。 在线性代数的第一讲中,我们从Row Picture、Column Picture、Matrix Picture三个角度来看这个问题。 上面的系统是二维的。通过添加第三个变量&#…...

写给自己的一些心得体会

为什么是CSDN??? 最近跑实验跑得绝望,感觉自己兜兜转转走了太多太多的弯路,我不知道这样的弯路什么时候是个尽头,就像在USJ排队,看似好像要到入口了,实则一转头还是无尽绵延的队伍。走了这么多弯路,总要…...

论文阅读(二十九):Multi-scale Interactive Network for Salient Object Detection

文章目录 Abstract1.Introduction2.Scale VariationProposed Method3.1Network Overview3.2Aggregate Interaction Module3.3 Self-Interaction Module3.4Consistency-Enhanced Loss 4.Experiments4.1Implementation Details4.2 Comparison with State-of-the-arts4.3Ablation …...

常见存储器及其特点

: 一、只读存储器(ROM)及其类型 1. ROM 特点:存储的数据固定不变,只能读出不能写入,且断电后数据不丢失。应用:通常用于存储系统程序,如BIOS等。 2. PROM(可编程只读…...

《向量数据库指南》——text-embedding-3-large与Mlivus Cloud打造语义搜索新纪元

使用text-embedding-3-large生成向量并将向量插入Mlivus Cloud实现高效语义搜索的深度解析与实战操作 在数字化时代,数据的处理和存储方式正在经历前所未有的变革。特别是随着大数据和人工智能技术的快速发展,向量数据库作为一种新型的数据存储和查询方式,正逐渐受到越来越…...

通过 Bytebase API 查看数据库审计日志

原文地址代码库 Bytebase 是一款数据库 DevOps 和 CI/CD 工具,专为开发者、DBA 和平台工程团队设计。虽然它提供了直观的 GUI 来管理数据库 schema 变更和访问控制,但有些团队可能希望使用 Bytebase API 将 Bytebase 集成到现有的 DevOps 平台中。 在之…...

# 渗透测试# 1.安全见闻(6)通讯协议

安全见闻6 通讯协议 ##B站陇羽Sec## 潜在的安全问题所涉及的领域 无线电安全,协议分析,web渗透,逆向分析 通讯协议涉及的安全主要包括以下几个方面: 1.1 保密性问题 …...

[Gdiplus/Gdi]_[中级]_[实现多行文本的多种颜色绘制-富文本绘制]

场景 在开发WTL/WIN32界面程序时,有时候需要绘制多行的段落文本,但是文本里的数值需要设置红色以便能让人第一时间关注到它。这种文本可以称之为富文本。GDI的DrawText和GDIPlus的DrawString方法都只能连续绘制某个颜色的文本。怎么实现?说明 在《绘图实现单行文本的多种颜色…...

Ubuntu如何创建一个子用户并赋与管理员权限

在Ubuntu操作系统中,如何创建一个子用户并赋与管理员权限 一、创建用户 sudo useradd -m -s /bin/bash test详细解释: sudo:以超级用户(root)权限执行该命令。useradd 命令通常需要管理员权限,因此需要加上 sudo。 useradd:创建新用户的命令。 -m:指示系统为新用户创建…...

【Linux | IO多路复用】epoll的底层原理详解

epoll 是一种高效的 I/O 多路复用机制,广泛用于 Linux 系统中,用于处理大量并发的文件描述符。它比传统的 select 和 poll 方法具有更好的性能,特别是在处理大量并发连接时。 1.epoll的设计思路 epoll是在select 出现 N 多年后才被发明的&a…...

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的,如下: 解决方案: proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题,会导致…...

Muggle OCR 是一个高效的本地OCR(光学字符识别)模块

Muggle OCR 是一个高效的本地OCR(光学字符识别)模块,专为“麻瓜”设计,用于简化文本识别的过程。这个模块特别适用于处理印刷文本和解析验证码1。 以下是一些关于 Muggle OCR 的主要特点和使用方法: 特点:…...

【SpringBoot】万字源码解析——启动流程

Spring Boot启动流程 Spring Boot 的入口类: SpringBootApplication public class IntelGradingApplication {public static void main(String[] args) {SpringApplication.run(IntelGradingApplication.class, args);} }Spring Boot 的启动过程可以分为两方面&am…...

Nginx 配置初步 下

Nginx 配置初步(下) 一行代表一个指令; 每个指令有其上下文环境,比如 listen 指令只能在 http 指令块中出现,不能单独出现。1. Http 服务配置初步 1.1 常用指令 Nginx 的所有模块,打开模块我们就能看到模块中支持的指令。最常用…...

可视化ETL平台-Kettle的安装及简单使用

本章知识简介 主线A: 自连接查询; 主线B: 安装JDK与Kettle; 主线C: 使用Kettle工具. 本章目标: 1: 知道使用一张表可以实现自连接查询; [了解]注意: 左表、右表都是同一张表 2: 了解Kettle环境的安装流程; [了解]a.安装JDKb.安装Kettle 3: 熟悉使用kettle将txt数…...

java8 动态加载jar包至系统的classpath

1. io.test包 创建MyMain.java类,创建addJarToClasspath方法将jar包动态加载进系统的classpath中 package io.test;import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method;public class MyMain {public st…...

C++二级题 计算好数:1数大于0数(二进制的位运算)

1、题目 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。 例如: (13)10 (1101)2,其中1的个数为3,0的个数为1,则此数是好数; (10)10 (1…...

数字孪生城市:智慧城市的未来蓝图

在当今数字化时代,智能技术的广泛应用正在改变人们的生活和工作方式。数字孪生城市作为未来新型智慧城市演进的重要方向,数字孪生城市是一种将城市物理世界的各个方面转化为数字形式的技术,通过网络空间与物理世界之间的实时数据交换和仿真分…...

Java篇图书管理系统

目录 前言 一. 图书管理系统的核心 二. 图书管理系统基本框架 2.1 book包 2.1.1 Book(书籍类) 2.1.2 Booklist (书架类) 2.2 user包 2.2.1 User类 2.2.2 Administrator(管理员类) 2.2.3 Visitor(用户类) 2.…...

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…...

010——二叉树(2)线索化

引入: 问题1: n个节点的二叉树,用二叉链表存储,问在这个二叉链表中一共有 __个指针域? 其中,有 __个指针域不为NULL,__个指针域为NULL? 答:2n n-1 n1 在二叉链表中&#xf…...

鸿蒙拍照小助手02

项目文件目录 为了确保项目文件目录清晰,以下是完整的项目文件目录结构: code 拍照小助手/ │ ├── entry/ │ ├── src/ │ │ ├── main/ │ │ │ ├── js/ │ │ │ │ └── 默认/ │ │ │ │ ├── 页面/ │ │ │ │ │ ├── 主页/ │ │ │ │ │ │ ├…...

lua while循环

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua作为一种小巧精致的语言,特别适用于嵌入其他程序提供脚本支持。在编程中,循环结构是不可或缺的一部分,而while循环则是…...

网站文章更新/买域名

进入项目对应的Build目录后,以下指令: $lipo -create Debug-iphoneos/libSalamaDeveloper.a Debug-iphonesimulator/libSalamaDeveloper.a -output libSalamaDeveloper.a 转载于:https://www.cnblogs.com/got-my-way/p/4197282.html...

杭州网站推广与优化/网络营销成功案例3篇

上一篇博客 我们介绍了几种数据传送指令,包括MOV,MOVS,MOVZ,PUSH和POP等,理解起来也不算难。本篇博客我们来接着看汇编语言的算术与逻辑运算指令,算术无非就是加减乘除,而逻辑运算也就是与或非,移位等操作。下面这张图…...

poi player wordpress/怎样打小广告最有效

9月22日消息,据国外媒体报道,日前微软开始通过发布补丁清理关于Windows 10的免费升级应用。 此前微软一直通过弹窗提醒要求Windows 7以及Windows 8用户免费升级至最新操作系统Windows 10。随着7月29日免费升级的到期,拖了近两个月后&#xff…...

石家庄微网站建设公司/湖北seo服务

什么是Node.js Node是一个服务器端JavaScript解释器。Node的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码。处理高并发和异步I/O是Node受到开发人员的关注的原因之一。 Node本身运行Google V8 JavaScript引擎&…...

wordpress怎么制作订单号管理/seo描述是什么意思

转:/********************** * 课题:将窗体中鼠标所在控件名显示在窗体标题上 * 作者:ZAXX * QQ : 94027486 * 本课题可简单扩展:获取屏幕上鼠标所在位置的窗口句柄与类名 **********************/using System;using System.Draw…...

网站后台word编辑器/长沙百度搜索排名优化

一、静态绑定和动态绑定的区别在Java中,当你调用一个方法时,可能会在编译时期(compile time)解析(resolve),也可能实在运行时期(runtime)解析,这全取决于到底是一个静态方法(static method)还是一个虚方法(virtual method)。如果是…...