目录
前言
本文主要介绍 Qt 中为我们提供的按钮控件,主要分为三种常见的按钮,QPushButton(普通按钮)、QRadioButton(单选按钮)、QCheckButton(复选按钮);
一、QPushButton
在谈这个控件前,首先我们要弄成按钮类的继承关系;通常这些按钮类都继承一个抽象按钮类,而这个抽象按钮类继承自QWidget类;如下所示;
因此,我们在使用某个具体的按钮控件时,该按钮控件会同时继承QWidget属性与QAbstractButton属性;
1、QPushButton常用属性
text:按钮中文本属性
icon:按钮中图标属性
iconSize:图标的大小属性
shortCut:按钮的快捷键属性
autoRepeat:按钮的连发属性(枪战游戏中通常长按鼠标左键表示连发)
autoRepeatDelay:重复触发连发的延时事件
autoRepeatInterval:重复触发的周期
上述接口均为获取接口,若想设置,接口前添加set为设置;
2、实战演练
之前,我们做过一个小案例,页面中有五个按钮,其中另外四个控制目标按钮进行上下左右移动,这次我们对这个案例进行升级,我们为每个按钮设置一张图片,并且会给按钮设置快捷键与连发属性;(图片资源可以在阿里巴巴矢量图网找)
(1)在设计师页面绘出五个按钮
(2)创建qrc文件,导入图片资源
(3)给目标按钮导入图片并设置大小
(2)给四个控制按钮设置槽函数
(3)给四个控制按钮设置图片
(4)给按钮设置快捷键,up->w,down->s,left->a,right->d
(5)设置连发
经过测试,我们发现通过快捷键控制默认是连发的,而通过鼠标点击控制,默认不是连发的,因此我们还想通过鼠标控制也可以达到连发的效果;
至此,小案例完成,有兴趣的可以尝试照着敲试试;
二、QRadioButton
1、QRadioButton属性
checkable:是否能选中
checked:是否已经被选中
autoExclusive:是否排他,默认为true
其中属性一与属性二看起来很相似,实际上,属性一表示这个按钮是否可以被选中,而属性二是获取当前按钮是否被选中;属性三中的排他为默认选项,比如一个选择性别的单选,选择了男就自动排除了女,这就是排他属性;
2、实战演练
案例一:我们想设计一个选择性别的单选选项,其中包括男、女和保密选项,选择后有一个提交按钮,提交后,会有一个Label标签显示选择性别;
(1)在设计师页面画出上述需求所需控件
(2)设置点击提交后的槽函数
案例二:我们想设计一个点餐案例,比如我们在吃塔斯汀时,通常会有一个套餐,而我们能从套餐中某些选项中选其中一项,这里就设计一个这样的案例;
(1)绘出如下设计师页面
可是这时会出现一个问题;由于单选按钮具有排他性,我们下面九单选中,只能选择一个,而我们期望的是一类产品只能选一个,因此我们需要创建一个组,将相同类别的加入到一个组内,这样就可以实现上述想要的效果;
(2)将相同类别规制到同一组
(3)编写槽函数
三、QCheckButton
1、QCheckButton属性
QCheckButton最重要的属性也是checkable与checked,这里就不做过多介绍;
2、实战演练
(1)绘制如下界面
(2)给提交按钮设置槽函数