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

qt常用控件--03

文章目录

  • qt常用控价
    • 按钮类控件
      • QRadioButton
      • 关于信号的补充
      • QCheckBox
    • 显示类控件
      • label
    • 结语

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
在这里插入图片描述
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,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界面缩放的时候,我们的滑稽图片也一直在缩放~~

结语

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

http://www.xdnf.cn/news/14609.html

相关文章:

  • 重点解析(软件工程)
  • 从零学习linux(2)——管理
  • 2025年检测相机十大品牌测评:工业级精度与场景化解决方案解析
  • DeepSeek今天喝什么随机奶茶推荐器
  • Docker知识点汇总——AI教你学Docker
  • 企业主动风险管理破局供应链“黑天鹅”,善用期货
  • Origin绘制三Y轴柱状图、点线图、柱状点线图
  • Spark基于Bloom Filter算法的Runtime Filter Join优化机制
  • STM32 串口通信②:蓝牙模块HC-05控制单片机
  • 以玄幻小说方式打开深度学习词嵌入算法!! 使用Skip-gram来完成 Word2Vec 词嵌入(Embedding)
  • Maven 多模块项目调试与问题排查总结
  • Elasticsearch 索引文档的流程
  • 酒店住宿自助入住系统——店铺自动运营—仙盟创梦IDE
  • 【达梦数据库】忘记SYSDBA密码处理方法-已适配
  • Python导论、数据类型、运算、I/O
  • 华大北斗TAU951M-P200单频定位模块 多系统冗余保障永不掉线 物流/车载导航首选
  • MySQL学习(1)——基础库操作
  • 开关电源:BUCK和BOOST
  • 逆向某物 App 登录接口:还原 newSign 算法全流程
  • 《情感反诈模拟器》2025学习版
  • 装配体镜像阵列与爆炸视图-装配体设计技能(2)
  • 算法-动态规划-钢条切割问题
  • 数智管理学(二十四)
  • C# Quartz.net 定时任务
  • Java Spring框架的核心原理详解
  • JDK 动态代理: 它的工作原理是什么?它有什么限制?
  • Linux系统基本操作指令
  • 深度实战|星环OS三大创新场景解密:如何用确定性技术重构智能汽车安全与体验?
  • K8s入门指南:架构解析浓缩版与服务间调用实战演示
  • 【51单片机定时中断 工作方式0, 1ms 初值是如何计算的?】2022-5-13