百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Qt Designer:布局管理的高级应用 qt布局管理器

haoteby 2024-11-09 13:01 46 浏览

PyQt有一个基本原则:主窗口中的所有窗口控件都有自己的父类。从下面图片的属性编辑器中可以看到,从PushButton到窗口控件是如何一步步继承传递的,这些事情都不需要我们操心,因为Qt Designer已经帮助做好了,这也是使用Qt Designer的方便之处之一。


QWidget:

(1)QWidget 是所有 Qt 界面元素的基类。这意味着所有 Qt 界面元素,包括按钮、标签、文本框等,都继承自 QWidget 类。因此,QWidget 类提供了一些通用的属性和方法,用于设置界面元素的各种外观和行为。

(2)按钮的参数与 QWidget 的属性和方法相关联。例如,按钮的文本可以通过 QWidget::setText() 方法设置,按钮的大小可以通过 QWidget::setGeometry() 方法设置。

(3)在 QWidget 里设置按钮的参数可以确保代码的简洁性和可维护性。如果将按钮的参数分散在不同的类或文件中,则代码将变得难以阅读和维护。


QAbstractButton:

(1)QAbstractButton 类是 Qt 框架中按钮部件的抽象基类,它提供了按钮共有的功能。

(2)继承自 QWidget 类,因此具备所有 QWidget 类的成员和方法。


QPushButton:

(1)QPushButton 类是 Qt 的 Widget 工具包中提供的一个标准可点击按钮元素。

(2)用户可以通过点击按钮进行交互,通常会触发应用程序中的某个动作。


总结:

在 Qt Designer 中设置按钮参数,可以选择在 QPushButton、QAbstractButton 或 QWidget 类中设置。具体选择哪种方法,取决于需要设置的参数和代码的简洁性。

以下表格总结了在 Qt Designer 中设置按钮参数的区别:

可见:对于pushbutton的参数主要在QWidget里设置;


绝对布局:

最简单的布局方法就是设置geometry这个属性。Geometry属性在PyQt中主要用来设置控件在窗口中的绝对坐标与控件自身的大小。

geometry 属性设置为 (150, 120), 100*150,这意味着:

矩形的左上角位于 (150, 120) 坐标处。

矩形的宽度为 100 像素。

矩形的高度为 150 像素。

因此,该矩形将从 (150, 120) 坐标开始,向右延伸 100 像素,向下延伸 150 像素。


布局管理器布局:

在绝对布局中,手动设置每个窗口控件的绝对坐标和大小非常繁琐,且难以适应窗口大小变化。布局管理器正是为了解决这些问题而引入的。

布局管理器的优势:

简化布局过程:无需手动计算每个控件的位置和大小,只需将控件添加到布局管理器中,并设置一些简单的参数即可。

自动适应窗口大小变化:布局管理器可以根据窗口大小的变化自动调整控件的位置和大小,保证界面布局的合理性。

提供多种布局方式: Qt 提供了多种布局管理器,例如水平布局、垂直布局、网格布局和表单布局等,可以满足不同应用场景的需求。


使用布局管理器:

以下图中开始使用布局:

(1)左侧第一列有3行数据,第二列和第三列分别有4行数据,这样不便于进行布局管理,因此在“收益”标签上面再添加一个标签,并命名为空。

然后第一列使用垂直布局,第二列使用栅格布局;



2、从Spacers栏分别将Horizontal Spacer和Vertical Spacer窗口控件拖入主窗口中,从

Display Widgets栏将Horizontal Line窗口控件拖入主窗口中

(1)Vertical Spacer表示两个布局管理器不要彼此挨着,否则视觉效果会不好看。

(2)Horizontal Spacer表示“开始”按钮应该与栅格布局管理器尽可能离得远一些,否则

视觉效果也会不好看。

(3)Horizontal Line 表示“开始”按钮与左边的两个布局管理器根本不是同一个类别,用

一条线把它们区分开来。


3、选中所有的窗口控件,单击鼠标右键,在弹出的快捷菜单中选择“布局”→“水平布局”;


minimumSize、maximumSize和sizePolicy

在使用布局管理器之后,控件在布局管理器中,可以通过的位置管理可以通过它们来描述。

1、minimumSize和maximumSize属性

minimumSize和maximumSize属性用来设置控件在布局管理器中的最小尺寸和最大尺寸,我们对Button(按钮)的这两个属性按照下图所示进行设置。

我们看到,无论如何压缩这个按钮,都不可能让它的宽度和高度小于 100;无论如何伸展这个布局管理器,都不可能让它的宽度和高度大于300;


2、sizePolicy

在介绍sizePolicy属性之前,我们需要对sizeHint和minisizeHint有一些了解。每个窗口控件都有属于自己的两个尺寸:一个是sizeHint(尺寸提示);一个是minimumSize(最小尺寸)。前者是窗口控件的期望尺寸,后者则是窗口控件压缩时所能够被压缩到的最小尺寸。

sizePolicy 的作用是:如果窗口控件在布局管理器中的布局不能满足我们的需求,那么就可以设置该窗口控件的sizePolicy来实现布局的微调。sizePolicy也是每个窗口控件所特有的属性,不同的窗口控件的sizePolicy可能不同。

如下是按钮控件的默认sizePolicy设置:

对于水平策略和垂直策略,有以下参数:

(1)Fixed:窗口控件具有其sizeHint所提示的尺寸且尺寸不会再改变。

(2)Minimum:窗口控件的 sizeHint 所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值小,但可以变得更大。

(3)Maximum:窗口控件的sizeHint所提示的尺寸就是它的最大尺寸;该窗口控件不能变得比这个值大,但它可以被压缩到minisizeHint给定的尺寸大小。

(4)Preferred:窗口控件的 sizeHint 所提示的尺寸就是它的期望尺寸;该窗口控件可以缩小到minisizeHint所提示的尺寸,也可以变得比sizeHint所提示的尺寸还要大。

(5)Expanding:窗口控件可以缩小到minisizeHint所提示的尺寸,也可以变得比sizeHint所提示的尺寸大,但它希望能够变得更大。

(6)MinimumExpanding:窗口控件的sizeHint所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值还小,但它希望能够变得更大。

(7)Ignored:无视窗口控件的 sizeHint 和 minisizeHint 所提示的尺寸,按照默认来设置。

值得注意的是,Minimum指的是该窗口控件的尺寸不能低于sizeHint所提示的尺寸;Maximum指的是该窗口控件的尺寸不能高于sizeHint所提示的尺寸。这与我们平常所理解的Minimum和Maximum的含义有些差别。


sizePolicy 和minimumSize、maximumSize之间的关系

sizePolicy 决定了窗口控件的尺寸如何根据其父容器的大小而变化。

minimumSize 和 maximumSize 限制了窗口控件的最小和最大尺寸。

相关推荐

如何为MySQL服务器和客户机启用SSL?

用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...

OpenVPN客户端配置_openvpn客户端配置文件解析

...

k8s 证书问题排查_k8s dashboard 证书

从去年开始一些老项目上陆陆续续出现一些列的证书问题,(证书原理这里就不说了,官方文档一堆)多数刚开始的表现就是节点的kubelet服务起不来,节点状态NotReady表现日志如下failed...

企业级网络互通方案:云端OpenVPN+爱快路由器+Win11互联实战

企业级网络互通方案:OpenVPN搭建公有云+爱快路由器+Win11三地互联实战指南「安全高效」三地局域网秒变局域网实施环境说明...

OpenV** Server/Client配置文件详解

Server配置详解...

接口基础认知:关键信息与合规前提

1.核心技术参数(必记)...

S交换机通过SSH登录设备配置示例(RADIUS认证+本地认证独立)

说明:●本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。●通过不同的管理域来实现RADIUS认证与本地认证两种方式同时使用,两...

SSL证书如何去除私钥密码保护_ssl证书怎么取消

有时候我们在生成证书的时候可以加入了密码保护。然后申请到证书安装到了web服务器。但是这样可能会带来麻烦。每次重启apache或者nginx的时候,都需要输入密码。那么SSL证书如何去除私钥密码保护。...

SSL证书基础知识与自签名证书生成指南

一、证书文件类型解析...

S交换机通过SSH登录设备配置示例(RADIUS认证)

说明:本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。假设已在RADIUS服务器上创建了用户名yc123,密码test#123。对...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

HTTPS TLS握手流程_进行tls握手

1.客户端向服务器发送`ClientHello`消息,包括支持的TLS版本、加密套件、随机数等信息。2.服务器收到`ClientHello`消息后,解析其中的信息,并根据配置选择一个加密套件。3....

Spring Boot 单点登录(SSO)实现_spring boot 单点登录jwt

SpringBoot单点登录(SSO)实现全指南单点登录(SingleSign-On,SSO)是一种身份验证机制,允许用户使用一组凭证登录多个相关但独立的系统。在微服务架构和企业级系统中,SS...

源码分享:在pdf上加盖电子签章_pdf如何加盖电子公章

在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...

微信支付商户API证书到期 怎么更换

微信支付商户API证书到期更换是一个非常重要的操作,需要仔细按照流程进行。如果证书过期,所有通过API的支付、退款等操作都会失败,将直接影响您的业务。请按照以下详细步骤进行操作:重要前提:分清...