qt常用控件--03

发布于:2025-06-26 ⋅ 阅读:(18) ⋅ 点赞:(0)

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
在这里插入图片描述
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qtLinuxC++进阶C++初阶数据结构初阶题海探骊c语言
欢迎点赞,关注!!

qt常用控价

按钮类控件

QRadioButton

该属性是一个单旋按钮,默认是具有排他机制的
同样的,作为QWidget和QAbstractButton的子类,前面所提到的属性QRadioButton都是可以使用的。

api接口:
在这里插入图片描述
我们使用代码示例:
在这里插入图片描述
为什么我们这里的信号使用的是clicked(bool)而非clicked()信号呢?
因为在QRadioButton中,有一个checkable属性,我们使用带参数的点击信号就可以获取到checkable的状态。

当控件中含有checkable接口时,使用点击按钮会使用带参数的,如QRadioButton,反之,使用无参数的,如QPushButton

我们来看现象:
在这里插入图片描述
当我们选择一个的时候,先前我们选择的一个QRadioButton就会被默认取消,即除选择之外的QRadioButton,其他的QRadioButton的checkable就会直接设置为false,所以这种按钮只能是单选按钮~~

我们再来优化一下,即当我们刚好运行程序的时候,我们设置默认性别为男性,因为这个不是一个函数,所以肯定是需要在Widget的构造函数中完成的。
来看代码:
在这里插入图片描述
我们再来讲解一个案例,比如我模拟一个点餐系统:
在这里插入图片描述
此时我选择了米饭,但是选择蔬菜的时候,之前米饭的选择就不在了,是因为QRadioButton的排他机制。那么该如何解决呢?

在这里插入图片描述
在界面上,我们只希望米饭的两个对象具有排他机制,蔬菜的两个对象具有排他机制,即米饭和蔬菜之间没有排他机制。

我们需要使用QButtonGroup来对按键进行分组:

细节:QButtonGroup我们需要放到对象树中,即我们需要在堆上创建QButtonGroup

在这里插入图片描述
再来看结果:
在这里插入图片描述

如果我们就直接删除一个按键,即我们将这个QRadioButton的checkable设置成false。

结论:此时我们无法点击这个按钮,但是这个按钮仍然可以响应信号~~

在这里插入图片描述
我们来看结果:
在这里插入图片描述
按钮无法被选中,所以checked一直都是false,但是信号可以被执行。

关于信号的补充

前面我们认识了clicked(bool)信号,我们也一并将剩余几个信号来讲解一下:
在这里插入图片描述
接下来我们来书写代码:
在这里插入图片描述
通过通过打印日志以及对四个按钮进行操作来观察:
在这里插入图片描述

QCheckBox

前面我们讲到QRadioButton具有排他属性,是单选按钮,但是,在生活中我们肯定也会见到多选按钮,使用
qCheckBox就能够达到这样的效果:
QCheckBox继承QAbstractButton和QWidget,所以前面所提到的QWidget属性在QCheckBox中仍然是可以使用的~~

api接口:含有checkable和checked接口,所以点击操作需要使用带参数的clicked

我们直接来看示例代码:
在这里插入图片描述
在这里插入图片描述
当然,也可以在点击(修改checkBox状态)的时候直接就修改label的文本了~~

显示类控件

label

我们先来介绍与label相关的接口,随后我们对于每个属性给出对应的代码示例说明:
这里我直接给出表格:
在这里插入图片描述
对于text属性我们已经比较了解了。
接下来我们来介绍textFormat属性:
在这里插入图片描述
我们现在给对应属性的文本添加上html标签和markdown标签:
在这里插入图片描述
接下来我们来介绍pixMap和scaledContents属性:
我们先把一张滑稽图片给加载到Label中,仍然是使用qrc机制:
这里我们创建跟Widget一样大的Label,这样就能够拉伸填满了:
在这里插入图片描述
接下来我们来拉伸这张图片,让他填满整个Label,此时也会填满整个Widget:
在这里插入图片描述
此时我们对Widget这个面板进行resize操作:
在这里插入图片描述
此时我们发现,当我们拖动Widget这个面板的时候,面板确实扩大了,但是我们的滑稽并没有扩大。如何让面板扩大的同时,能让滑稽也扩大呢?

首先,我们在拖动我们的Widget窗口面板时,不是一下就拖动过去的,而是你移动一点,整个界面就只动一点,不是说一下就闪过去,整个界面就直接缩小了~~

首先用户对Widget的操作,会对应一些信号。
表示用户的操作,有两类概念:一种是信号,一种是事件~~

当用户拖拽窗口的时候,就会出发resize事件,而像resize这样的时候,是连续触发的,在窗口大小a到b的过程中,会调用很多次resize函数,我们也使用这个原理,来对滑稽图片大小进行改写

在改写图片大小的时候,每一次图片大小肯定都是不一样的,所以,我们必须对resize函数进行重写~~

补充知识点:指定回调函数的方法:函数指针,仿函数,lambda表达式,多态(重写父类虚函数),qt信号槽(connect)

来看代码:
在这里插入图片描述
函数定义:
在这里插入图片描述

其中QResizeEvent中有一个很重要的东西,包含了触发resize这一事件的时刻,此时窗口的大小

我们运行代码来看缩放界面的效果~~
在这里插入图片描述
当我们不断移动界面的时候,下方会不断地打印出日志。此时,说明Widget界面大小在不断的更新,qt在不断调用这个重写函数。
由于Widget在不断更新,我们使用新的位置来更新滑稽图片即可:
来看最终的定义:
在这里插入图片描述
这样就能够完成当Widget界面缩放的时候,我们的滑稽图片也一直在缩放~~

结语

今天的内容就分享到这里,不足之处欢迎留言指出,感谢大家支持!!
骐骥一跃,不能十步;驽马十驾,功在不舍!!
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到