【Qt】--常用控件(显示类控件)

一、QLabel

这个控件是用来显示文本和图片的,其具有如下属性

首先我们来看其文本格式:

纯文本就是最普通的文本,然后富文本就是内容更丰富的的文本,其支持html。

下面我们来设置一下其文本格式,感受其样式有何变化。

可以看到文本的显示方式是有很大区别的,而且,当我们在普通文本中添加富文本或者markdown的一些属性,其实是不会有效果的。

然后有个问题就是,我们图片的大小肯定不是固定的,也就是说,如果我们需要将图片全部都覆盖到整个窗口,那么我们还可以将其自动拉伸的方式,使得图片覆盖到整个窗口。

然后还有个问题,当我们的图片大小被设置好,那么未来我们的窗口变化,那么我们的图片的大小是不会变化的,所以我们还需要将其设置成变化的。

在Qt中,对于用户的操作实际上是分为两类的,一种就是前面我们讲到的信号,然后另外一种就是事件。

当我们用户使用拖拽修改窗口的大小的时候,就会触发resize事件(resizeEvent)

然后向resize这种事件其是一种连续变化的事件,那么用户进行拖拽的这个操作实际上是会触发一系列的resizeEvent

所以此时我们可以借助resizeEvent来完成这个对于用户拖拽窗口,然后图片的大小也要进行变化的操作。

这个函数的形参,其包含了当我们进行拖拽操作的时候,此时窗口尺寸的数值。

下面我们再来看其文本对齐方式的效果:

对于文本对齐要使用到:setAlignment

当我们的文本非常长的话,那么我们就要将其进行换行处理,所以我们将其设置为下面的情况就可以实现自动换行操作:

然后我们还可以设置文本的缩进:

这个传入的50参数就是要缩进的像素点。

那么对于这个缩进,如果我们和上面的换行进行配合使用,那么其第二行也会出现缩进的效果,所以后面如果我们只是要第一行有缩进的效果,那么可以再使用CSS中的一些接口

然后还有一个是可以设置其边距,那么这个边距是会使得文本的x,y设置为传入的参数。

我们的Labie还可以设计伙伴关系:

下面我们创建两个Labie和radioButton

二、QLCDNumber

QLCDNumber这个控件是专门用来显示数字的,其类似于老式计算器的效果:

去有如下属性:

要注意的是,设置value和intvalue的方法名字为display,而不是setValue或者setIntValue

下面我们使用这个控件实现一个倒计时的功能:

首先,我们给这个显示控件设置一个初始值。

然后这个功能的要点就是实现每隔一秒,然后显示的数值就-1,然后根据初始值决定这个逻辑的执行次数。

那么我们就要一个定时器的效果,但是在C++标准库中没有提供定时器的实现,Boost中提供了。

在我们的Qt中也提供了对应的定时器,Qt中的定时器是结合了信号和槽的。

QTimer

通过这个类创建出来的对象,其会产生一个timeout这样的信号,然后我们可以通过start方法来开启定时器,并且在参数中设定触发timeout的周期。

结合connect,把这个timeout信号绑定到需要的槽函数中,那么就可以执行逻辑,然后修改QLCDNumber中的数据了。

那么我们是否可以不使用QTimer的函数,使用window中的sleep和一个循环来实现呢?

下面我们直接通过代码来看:

这个代码虽然能够编译成功并运行,但是我们发现其效果并不是我们预期中的。

这是为啥呢?

在我们的Qt中,显示是在执行完构造,然后执行下面的show函数才能实现显示的效果,那么当我们执行完构造吗,此时的数值已经减为0了,我们可以通过这个代码去实践一下,我们会发现其构建的时候非常慢,这是因为在构造函数中,我们在进行倒计时操作。

那么如果我们创建一个新线程来实现倒计时操作,然后呢主线程去完成构造函数,那么其就执行到show这个操作了,是否可行呢?

这个代码同样是不⾏的。Qt中规定,任何对于GUI上内容的操作,必须在主线程中成。像Widget构造 函数,以及connect连接的slot函数,都是在主线程中调⽤的。⽽我们⾃⼰创建的线程则不是。 当我们⾃⼰的线程中尝试对界⾯元素进⾏修改时,Qt程序往往会直接崩溃。

三、ProgressBar

这个控件是用来显示一个进度条:

其有如下属性:

下面我们来使用其看看效果:

我们设置其1秒钟内实现进度条增加十次

在实际开发中,进度条的取值,往往是根据当前任务的实际进度来进⾏设置的。 ⽐如需要读取⼀个很⼤的⽂件,就可以获取⽂件的总的⼤⼩,和当前读取完毕的⼤⼩,来设置进 度条的⽐例. 由于上⾯我们介绍了Qt禁⽌在其他线程修改界⾯,因此进度条的更新往往也是需要搭配定时 器来完成的。通过定时器周期触发信号,主线程调⽤对应的slot函数。再在slot函数中对当前的任务进度进 ⾏计算,并更新进度条的界⾯效果。

我们还可以设置进度条中的颜色,在Qt Designer右侧的属性编辑器中,找到QWidget的styleSheet 属性。

四、Calendar Widget

这个控件是用于显示一个日历:

其效果如下:

其有如下属性:

有如下操作:

如上就是我们在Qt中常使用的显示类控件

相关推荐
PHP实战开发录1 小时前
PHP文件上传成功为什么页面却找不到
开发语言·nginx·php·开发
云小逸2 小时前
C++ 第一阶段:对象、内存与生命周期
开发语言·c++
玖玥拾3 小时前
Lua 基础语法(二)
开发语言·unity·lua
王的宝库3 小时前
GO常用标准库包
开发语言·后端·golang
geovindu3 小时前
python: Face Recognition
开发语言·后端·python·人脸识别
平头哥技术团队3 小时前
Day 13 | 调 line-height 和 margin:三处间距让名片页脱离模板感
开发语言·前端·javascript·学习·html5
黑马程序员毕设4 小时前
基于Java的仪器管理系统设计与实现
java·开发语言·spring boot·后端·微信小程序
平头哥AI4 小时前
Day 13 | 一个函数回两个值:Go 的 error 是从哪冒出来的
开发语言·后端·golang
asdzx674 小时前
Python 实现 PDF 文本查找与高亮标注
开发语言·python·pdf