QtDesigner中Label控件详解
一: Label控件:
label也就是标签,我们通常会认为标签就是显示文本的,但其实label标签还有很多的作用,接下来我就给大家介绍一下:
① 显示文本,我们可以通过拖动label后直接修改label的显示文本(当运行代码显示ui界面后,预设定的文本直接进行显示)
② 显示图片,其实我们的label还有一个重要的功能就是显示图片
二:实战演示
在左侧的控件部分找到Label,将其拖动到MainWindow中。
ok,接下来就到精彩时刻了,接下来将介绍这个label的属性信息。
对象位置信息
我们可以看见各个组件的关系:
MainWindow(容器):应用程序的主窗口框架,提供标准窗口功能(标题栏、最大化/最小化按钮等),它的内部不能直接放置普通的控件,必须通过 CentralWidget间接管理控件。
CentralWidget(容器):MainWindow 的核心内容区域,是所有主界面控件的根容器。支持嵌套复杂结构,在一个结构控件中加入其他控件。
因此我们可以看见label控件被放在了CentralWidget内部,可以看见MainWindow的类名称为QMainWindow,我们在编写代码时调用的父类就是QMainWindow。
Label名称
Label的名称很重要,因为在后续编写代码时会调用这个Label的名称。如何修改名称。
关于名称有两个需要提到的点:
① 关于①提到的名称其实算不上名称,只是在label上展示的字。可以通过双击界面上的TextLable修改展示字,比如修改111
我们可以看见在属性中text的值变成111,因此也可以在这个text的位置改值。
以上其实没有改到label的根本,只是展示的内容。
接下来改动这个label的名字。
② 改动label的名字
通过在对象位置修改名称(Label名称)(关系到引用)
在这个位置修改名称,在代码中对这个Label进行修改展示字
self.ui.current_state.setText(f"保存成功!")
(“保存成功!”)修改原先 current_state展示的字。
控件的enabled
为什么我在Lable篇提到enabled呢?因为关于enabled在各个控件都有相关的属性设置。
其在QWidget中的enabled,勾选或者不勾选这个值,True
(默认值):控件可正常响应鼠标、键盘事件(如点击按钮、输入文本)。设为 False
:控件显示为灰色(样式可自定义),且无法响应用户操作。具体的情况如下,左边时勾选的情况,右边是没有勾选的情况。可以发现右边字变成灰色了,说明无法点击进行相关操作(此在button中有很大的作用)。当然关于enabled也可以在代码中进行设置。
以下代码是将这个label设为False。
self.ui.label.setEnabled(False)
Label大小和展示时填充情况
首先明确:控件的 sizeHint()
默认根据其 内容(如文本、图标)和 样式(如字体、边距)自动计算。通过修改内容属性,可间接调整 sizeHint()
返回值。
关于Label,最终要的就是Label的大小和填充策略。因为通常我会将一张图像传给Label进行展示,此时Label展示是否完全,展示多少内容都是需要进行调整的。
关于上图,x和y代表的是Label的标签位置,宽度和高度代表的是Label的宽高,这个宽高比例和大小都对后续填充图像有所影响。
上图可以看见图像的水平和垂直策略,其中包含这些方法 。将在一个Horizontal Layout上展示。
①Fixed方法:
控件宽度固定为 sizeHint()
返回的值,不随布局拉伸。
以上就是设置为fix的方法,无论我放在这个Layouts中,这个label的大小都是紧贴这这行字的,不会发生拉伸的情况。
②Minimum方法:
控件宽度不可小于 sizeHint()
,但可以拉伸至更大。控件的最小允许尺寸(布局不会分配小于此值的空间)
由于sizeHint()
内部计算,我们观察以下变化情况。
将水平和垂直方向都设置为minimum时,只要不小于设置的值可以无限拉大,目前我们可以看见这个label已经拉伸到完全填充整个layout了。
③Maxmum方法:
控件宽度不可超过 sizeHint()
,但可以缩小至更小。控件的最大允许尺寸(布局不会分配超过此值的空间)。
此时我设置垂直策略为Maximum,限制其最大尺寸只能为Label的尺寸。
一个比较反常识的感觉就是,mini反而变大,max反而变小。
其实只需要记住,mini限制小尺寸(layout不能比label小,如果小就会被撑大(撑大到label允许的最小尺寸))
max限制大尺寸(layout大,但他不会影响到label的大小,因为已经限制label变大了,因此label放到很大的layout中也不会使label变大)
④Perferred方法:
控件默认使用 sizeHint()
的宽度,但可拉伸或缩小(优先保持理想大小)。
⑤Expanding方法:
控件会尽可能扩展以填充可用空间,优先级高于其他控件。
可以看出已经扩展到整个空间中了。
⑥MinimumExpanding方法
控件宽度至少为 sizeHint()
,并尽可能扩展(类似 Expanding
)。
⑦Ignored方法
完全忽略 sizeHint()
,控件宽度由布局或父容器强制决定。
Label的水平和垂直延展
以水平延展举例:
在一个layout中放入两个Label(使用prederred策略),此时两个label占的区域相同大,但是可以通过水平延申进行修改。
此时我将两个Label的水平延展都设置为10,两张图依然是1:1的关系 。
当我把第二张设置为20时,图像所占区域变成了1:2了,这就是延展的变化。
Label上显示字体
在font属性上,可以选择不同的字体情况。
Label居中等位置关系
我们可以看见,当我们在label上输入相关字后,可能不是居中显示的,但是当我们想让其居中或者居右显示时,就可以通过alignment进行设置。其中有水平和垂直方向上的位置。
设置为水平居中后,字就位于label的中心区域了。
Label的背景,字体,渐变等相关风格设置
相关风格设置都可以在styleSheet中进行设置。
点击三个点,会出现下面的样式。
举个例子:如果想添加背景颜色,记住不要直接点击添加颜色,因为你需要添加背景颜色,需要点击添加颜色后面的倒三角,选择background-color,随后选择想添加的颜色。
添加结束后,界面会显示:background-color:xxxx。发现我们的颜色也显示了。
因此当我们熟练后,可以直接在样式表中输入background-color: 随后直接点击添加颜色,就可以完成背景色的添加,当然还有很多的方法,大家可以自己进行探究。